该用户从未签到
|
在struts2框架中,当action处理完之后,就应该向用户返回结果信息,该任务被分为两部分:结果类型和结果本身。7 R3 ~" q$ u1 b0 _7 R; F
: e( J. J. n( }& C9 G4 K结果类型提供了返回给用户信息类型的实现细节。结果类型通常在Struts2中就已预定义好了(见下表),或者是由插件提供,开发人员也可以自定义结果类型。默认配置的结果类型是dispatcher,该结果类型使用JSP来向用户显示结果。当定义了结果类型之后,该结果类型可以在不同的action中重复使用。
. ~8 ~4 R* z9 Y7 ~5 T* z5 n' j- k/ Q* Y5 L Z ]) F& ~
?
2 o( _& ]: z' w2 c! J3 v* z4 m+ n) I) d- u- r8 ^& D$ X+ h
Struts2框架提供的结果类型
8 I! W8 w" N. w0 f' D已配置结果类型名 类 名 描 述
( o8 k, Y' ?7 G8 r' R" o0 Adispatcher org.apache.struts2.dispatcher.
/ ^3 s: g6 W. R# v. Y9 c) fServletDispatcherResult 默认结果类型,用来呈现JSP页面
& K0 h0 @$ f/ g6 o. z( A: `chain com.opensymphony.xwork2.5 m: r9 T" Z8 t$ N
ActionChainResult 将action和另外一个action链接起来$ a6 z7 F# z$ L
freemarker org.apache.struts2.views.freemarker.
4 H4 O. H* ^$ t) s2 @% \$ }FreemarkerResult 呈现Freemarker模板$ C# a: w7 h w: |0 O2 I
httpheader org.apache.struts2.dispatcher.# v1 |/ w3 W1 m/ X6 H# ?
HttpHeaderResult 返回一个已配置好的HTTP头信息响应
1 n8 H+ s/ D( a9 O4 Wredirect org.apache.struts2.dispatcher.
2 p* e3 Z# x2 p/ r- mServletRedirectResult 将用户重定向到一个已配置好的URL7 P% P1 c& ]; Y2 ]
redirectAction org.apache.struts2.dispatcher.
" V' c0 d! K3 T+ p$ W* }- IServletActionRedirectResult 将用户重定向到一个已定义好的action! { W% f6 }! Z( ~
stream org.apache.struts2.dispatcher.
' k3 ] \5 l* _' J( k2 e6 h" O3 G" {1 qStreamResult 将原始数据作为流传递回浏览器端,
) y, @. Z3 ~% ~$ ?: }该结果类型对下载的内容和图片非常有用1 K0 K1 Q9 h. s9 v
velocity org.apache.struts2.dispatcher.
6 h3 k* B# c4 D% \VelocityResult 呈现Velocity模板* R+ N3 @4 ~# h/ P% X5 F! e
xslt org.apache.struts2.views.xslt.
2 z) |* o- d' I2 [" m1 n' @' KXSLTResult 呈现XML到浏览器,$ Z. Y5 j. h* c* _ S# k
该XML可以通过XSL模板进行转换
4 p* d1 E+ I- _# M& V- A3 \3 wplaintext org.apache.struts2.dispatcher.. `+ Q" H8 P4 c2 U6 ?
PlainTextResult 返回普通文本类容
( X5 y$ g4 t, R6 c简单说明一下result的name属性和type属性:1 c2 E4 Y K; b8 t# l0 w0 S
SUCCESS:Action正确的执行完成,返回相应的视图,success是name属性的默认值。
, i! O# _2 }. j# O$ J o; E3 @5 ]NONE:表示Action正确的执行完成,但并不返回任何视图。5 B9 g4 g) B& ~. O2 a
ERROR:表示Action执行失败,返回到错误处理视图。6 d% G( I5 I i5 ^
INPUT:Action的执行,需要从前端界面获取参数,INPUT就是代表这个参数输入的界面,一般在应用中,会对这些参数进行验证,如果验证没有通过,将自动返回到该视图。
! z7 [2 a# W8 QLOGIN:Action因为用户没有登陆的原因没有正确执行,将返回该登陆视图,要求用户进行登陆验证。4 D2 v( ?3 W4 Q& q; j
dispatcher:请求转发,底层调用RequestDispatcher的forward()或include()方法,dispatcher是 type属性的默认值,通常用于转向一个JSP。localtion指定JSP的位置,parse如果为false表示location的值不会被当作 OGNL解析,默认为true。
# Y. u- m8 x8 t5 v. G( Nredirect:重定向,新页面无法显示Action中的数据,因为底层调用response.sendRedirect("")方法,无法共享请求范围内的数据,参数与dispatcher用法相同。
4 A4 A8 u/ q( d( p7 V9 Y; Sredirect-action:重定向到另一个Action,参数与chain用法相同,允许将原Action中的属性指定新名称带入新Action 中,可以在Result标签中添加 <param name=”b”>${a} </param>,这表示原Action中的变量a的值被转给b,下一个Action可以在值栈中使用b来操作,注意如果值是中文,需要做一些编码处理,因为Tomcat默认是不支持URL直接传递中文的!" j8 y4 f# E% R( m2 z
velocity:使用velocity模板输出结果,location指定模板的位置(*.vm),parse如果为false,location不被OGNL解析,默认为true。' q* v$ W7 B. h! k4 `+ Z% ~
xslt:使用XSLT将结果转换为xml输出,location指定*.xslt文件的位置,parse如果为false,location不被 OGNL解析,默认为true。matchingPattern指定想要的元素模式,excludePattern指定拒绝的元素模式,支持正则表达式,默认为接受所有元素。
5 R$ C5 L& |( Y& z' g" y# khttpheader:根据值栈返回自定义的HttpHeader,status指定响应状态(就是指response.sendError(int i)重定向到500等服务器的状态页)。parse如果为false,header的值不会被OGNL解析,headers,加入到header中的值,例如: <param name=”headers.a”>HelloWorld </param>。可以加多个,这些键-值组成HashMap。( ^7 b- L2 n5 J8 `" ^
freemaker:用freemaker模板引擎呈现视图,location指定模板(*.ftl)的位置,parse如果为false,location的值不会被OGNL解析。contentType指定以何中类型解析,默认为text/html。
! {2 b2 c9 m& n* lchain:将action的带着原来的状态请求转发到新的action,两个action共享一个ActionContext,actionName指定转向的新的Action的名字。method指定转向哪个方法,namespace指定新的Action的名称空间,不写表示与原Action在相同的名称空间;skipActions指定一个使用 , 连接的Action的name组成的集合,一般不建议使用这种类型的结果。0 z, u3 z: l. s) a; z! \
stream:直接向响应中发送原始数据,通常在用户下载时使用,contentType指定流的类型,默认为 text/plain,contentLength以byte计算流的长度,contentDisposition指定文件的位置,通常为 filename=”文件的位置”,input指定InputStream的名字,例如:imageStream,bufferSize指定缓冲区大小,默认为1024字节。
- b% C: ?) w) V8 M7 Dplaintext:以原始文本显示JSP或者HTML,location指定文件的位置,charSet指定字符集。
( D* r( K# b+ F" G |
|