该用户从未签到
|
在struts2框架中,当action处理完之后,就应该向用户返回结果信息,该任务被分为两部分:结果类型和结果本身。$ u$ E8 y- A! B9 j
+ L! B @5 d9 x6 q/ ^) B. O, Z结果类型提供了返回给用户信息类型的实现细节。结果类型通常在Struts2中就已预定义好了(见下表),或者是由插件提供,开发人员也可以自定义结果类型。默认配置的结果类型是dispatcher,该结果类型使用JSP来向用户显示结果。当定义了结果类型之后,该结果类型可以在不同的action中重复使用。
# y8 }0 M9 h4 F6 S+ c
: V$ v! f& D7 V, Z0 M, C?7 ?. E8 x; r* Y9 ?- ^
) s* @- p3 w7 g) L L0 J0 mStruts2框架提供的结果类型
2 a' r4 Y, P: X已配置结果类型名 类 名 描 述
2 P; ]6 A% E; G& Kdispatcher org.apache.struts2.dispatcher. ]6 S5 s# Q3 n/ }" w
ServletDispatcherResult 默认结果类型,用来呈现JSP页面
6 ], C# g9 u0 P; M- y2 Dchain com.opensymphony.xwork2.8 `0 K% S; o+ \" Q: h0 a+ Q
ActionChainResult 将action和另外一个action链接起来
9 m$ Y7 `2 F) _3 I y3 ]freemarker org.apache.struts2.views.freemarker.: m6 s; r6 R6 Q4 Z( G) A3 x9 c
FreemarkerResult 呈现Freemarker模板
' V3 P' {8 l% v# N% r2 Qhttpheader org.apache.struts2.dispatcher.
9 U% V! X( J+ B- N9 |2 YHttpHeaderResult 返回一个已配置好的HTTP头信息响应
. T) O$ g% N; L: Jredirect org.apache.struts2.dispatcher.5 b- Y5 W5 D) ^+ Z# Z( d! q
ServletRedirectResult 将用户重定向到一个已配置好的URL8 Q! g( G) U6 N. R/ ~0 |1 A3 m
redirectAction org.apache.struts2.dispatcher.0 w* ]% B2 m$ K3 j: o$ ?# O
ServletActionRedirectResult 将用户重定向到一个已定义好的action
! C! p$ i4 X8 lstream org.apache.struts2.dispatcher.
, F$ o0 v; }7 V; k! D; `% XStreamResult 将原始数据作为流传递回浏览器端,; c3 E) v, D6 }5 v# L
该结果类型对下载的内容和图片非常有用* g7 ^; L! {" N7 G b |8 G& a
velocity org.apache.struts2.dispatcher.
% U" o8 R( @7 G. s" AVelocityResult 呈现Velocity模板7 B" Z& s+ r4 f7 C6 r. q; ]2 A
xslt org.apache.struts2.views.xslt.) a$ g: W; ~+ K7 b* |9 }
XSLTResult 呈现XML到浏览器,: s" H8 q2 O2 Z$ p
该XML可以通过XSL模板进行转换
# {6 Z- j' \ V1 s' v3 s! Aplaintext org.apache.struts2.dispatcher.
% r6 [+ \3 D5 q! }4 dPlainTextResult 返回普通文本类容
. `/ ~$ Z1 L$ H4 C9 j1 d% C+ q( o+ J$ i简单说明一下result的name属性和type属性:+ U4 `& P: y8 z- i( z: [
SUCCESS:Action正确的执行完成,返回相应的视图,success是name属性的默认值。7 N' e9 X: _; U- L0 h* W
NONE:表示Action正确的执行完成,但并不返回任何视图。
/ L2 }- p/ x5 z" t: ]/ NERROR:表示Action执行失败,返回到错误处理视图。2 u5 R6 U& o; R$ C* N4 s& E" a
INPUT:Action的执行,需要从前端界面获取参数,INPUT就是代表这个参数输入的界面,一般在应用中,会对这些参数进行验证,如果验证没有通过,将自动返回到该视图。
! K0 |9 d9 b' o) ^2 OLOGIN:Action因为用户没有登陆的原因没有正确执行,将返回该登陆视图,要求用户进行登陆验证。
_/ _/ x' _7 H0 q9 Bdispatcher:请求转发,底层调用RequestDispatcher的forward()或include()方法,dispatcher是 type属性的默认值,通常用于转向一个JSP。localtion指定JSP的位置,parse如果为false表示location的值不会被当作 OGNL解析,默认为true。
8 W8 {- T- \3 W! B& F# \5 s# sredirect:重定向,新页面无法显示Action中的数据,因为底层调用response.sendRedirect("")方法,无法共享请求范围内的数据,参数与dispatcher用法相同。( K. y: Z: @4 h* A
redirect-action:重定向到另一个Action,参数与chain用法相同,允许将原Action中的属性指定新名称带入新Action 中,可以在Result标签中添加 <param name=”b”>${a} </param>,这表示原Action中的变量a的值被转给b,下一个Action可以在值栈中使用b来操作,注意如果值是中文,需要做一些编码处理,因为Tomcat默认是不支持URL直接传递中文的!! i& d; T* \. r
velocity:使用velocity模板输出结果,location指定模板的位置(*.vm),parse如果为false,location不被OGNL解析,默认为true。4 ]2 p. q4 U" x! r
xslt:使用XSLT将结果转换为xml输出,location指定*.xslt文件的位置,parse如果为false,location不被 OGNL解析,默认为true。matchingPattern指定想要的元素模式,excludePattern指定拒绝的元素模式,支持正则表达式,默认为接受所有元素。' Q1 `3 F L3 s5 S7 F
httpheader:根据值栈返回自定义的HttpHeader,status指定响应状态(就是指response.sendError(int i)重定向到500等服务器的状态页)。parse如果为false,header的值不会被OGNL解析,headers,加入到header中的值,例如: <param name=”headers.a”>HelloWorld </param>。可以加多个,这些键-值组成HashMap。
& c; R) D5 m1 K& l. vfreemaker:用freemaker模板引擎呈现视图,location指定模板(*.ftl)的位置,parse如果为false,location的值不会被OGNL解析。contentType指定以何中类型解析,默认为text/html。
- Q7 M7 g5 j- w7 \/ u0 o+ ^chain:将action的带着原来的状态请求转发到新的action,两个action共享一个ActionContext,actionName指定转向的新的Action的名字。method指定转向哪个方法,namespace指定新的Action的名称空间,不写表示与原Action在相同的名称空间;skipActions指定一个使用 , 连接的Action的name组成的集合,一般不建议使用这种类型的结果。
6 A( C" t2 p& ~3 Wstream:直接向响应中发送原始数据,通常在用户下载时使用,contentType指定流的类型,默认为 text/plain,contentLength以byte计算流的长度,contentDisposition指定文件的位置,通常为 filename=”文件的位置”,input指定InputStream的名字,例如:imageStream,bufferSize指定缓冲区大小,默认为1024字节。% {* u7 }9 [3 M: j" z
plaintext:以原始文本显示JSP或者HTML,location指定文件的位置,charSet指定字符集。6 P: k5 M! b+ A! A9 K
|
|