该用户从未签到
|
在struts2框架中,当action处理完之后,就应该向用户返回结果信息,该任务被分为两部分:结果类型和结果本身。0 |6 R. w& b" u
% g* l1 Z; `, N6 m1 [ c' U结果类型提供了返回给用户信息类型的实现细节。结果类型通常在Struts2中就已预定义好了(见下表),或者是由插件提供,开发人员也可以自定义结果类型。默认配置的结果类型是dispatcher,该结果类型使用JSP来向用户显示结果。当定义了结果类型之后,该结果类型可以在不同的action中重复使用。! y( V& _$ V; o8 O8 T
/ s! S* B2 ^2 ^5 t% W6 v?
0 z- \1 @' n: v6 b2 P( X- l9 I$ T( y1 Z( L0 C7 g4 Q
Struts2框架提供的结果类型
/ J4 \6 S. ^2 j* O已配置结果类型名 类 名 描 述! A6 K5 L( d; e! ~( M; b9 r- g
dispatcher org.apache.struts2.dispatcher.
5 m$ ~2 B4 r2 q0 A- F6 @/ HServletDispatcherResult 默认结果类型,用来呈现JSP页面" U) E' ]& n( B- i/ l8 X
chain com.opensymphony.xwork2.! H( `3 N: {& y! Y
ActionChainResult 将action和另外一个action链接起来
) `. m+ G; T; K y6 h+ t9 _0 V' s- L' ufreemarker org.apache.struts2.views.freemarker./ }' H& h |# R1 L1 `& s$ O' [
FreemarkerResult 呈现Freemarker模板3 W) l2 Y$ Y* U1 q% X
httpheader org.apache.struts2.dispatcher.
y! w; W) u9 h/ C+ p8 q1 T EHttpHeaderResult 返回一个已配置好的HTTP头信息响应
# K) y9 ^' u5 n' \) yredirect org.apache.struts2.dispatcher.
4 g" c- Y' ]3 |' u$ M+ EServletRedirectResult 将用户重定向到一个已配置好的URL
% {" t8 u/ x' Q; \7 A4 mredirectAction org.apache.struts2.dispatcher.2 J5 {# D% b2 w; g2 S- m; a9 t
ServletActionRedirectResult 将用户重定向到一个已定义好的action0 h: F, H+ t8 S
stream org.apache.struts2.dispatcher." Y' H) l2 U+ y- Q' @" k# D
StreamResult 将原始数据作为流传递回浏览器端,
: T% @' c# v+ V) B) o: y, F该结果类型对下载的内容和图片非常有用
8 u" V# H4 J# Wvelocity org.apache.struts2.dispatcher./ ]1 ~& t6 F4 b
VelocityResult 呈现Velocity模板
6 }; p' s3 \8 _/ rxslt org.apache.struts2.views.xslt.7 K/ E1 R% e' X6 R, r" X
XSLTResult 呈现XML到浏览器,. ` N& t* Z) i+ q1 D: ]
该XML可以通过XSL模板进行转换
, h$ u$ Z8 U3 ?plaintext org.apache.struts2.dispatcher.
! `4 A1 f& ~, _PlainTextResult 返回普通文本类容2 F8 ? z, f9 d9 Z7 L
简单说明一下result的name属性和type属性:
" d; ?) X& p/ O/ J' p5 n& K# ZSUCCESS:Action正确的执行完成,返回相应的视图,success是name属性的默认值。
) a% n+ z! X$ T7 b# }# ~/ s: XNONE:表示Action正确的执行完成,但并不返回任何视图。 y0 G N' h, L; e
ERROR:表示Action执行失败,返回到错误处理视图。( R# E( P- ~, Y4 v, P7 e7 R
INPUT:Action的执行,需要从前端界面获取参数,INPUT就是代表这个参数输入的界面,一般在应用中,会对这些参数进行验证,如果验证没有通过,将自动返回到该视图。3 h6 Z1 P3 ?! z ^0 S$ _0 H: r
LOGIN:Action因为用户没有登陆的原因没有正确执行,将返回该登陆视图,要求用户进行登陆验证。4 S; | E2 y; k5 W
dispatcher:请求转发,底层调用RequestDispatcher的forward()或include()方法,dispatcher是 type属性的默认值,通常用于转向一个JSP。localtion指定JSP的位置,parse如果为false表示location的值不会被当作 OGNL解析,默认为true。) X$ Y. ^+ L% }) _; ^& G0 v9 y
redirect:重定向,新页面无法显示Action中的数据,因为底层调用response.sendRedirect("")方法,无法共享请求范围内的数据,参数与dispatcher用法相同。
0 e9 f6 X/ O% q s3 B0 f7 Lredirect-action:重定向到另一个Action,参数与chain用法相同,允许将原Action中的属性指定新名称带入新Action 中,可以在Result标签中添加 <param name=”b”>${a} </param>,这表示原Action中的变量a的值被转给b,下一个Action可以在值栈中使用b来操作,注意如果值是中文,需要做一些编码处理,因为Tomcat默认是不支持URL直接传递中文的!
- U/ D7 W, b6 E! vvelocity:使用velocity模板输出结果,location指定模板的位置(*.vm),parse如果为false,location不被OGNL解析,默认为true。$ N4 {5 v; X8 p5 ]& ~0 ~
xslt:使用XSLT将结果转换为xml输出,location指定*.xslt文件的位置,parse如果为false,location不被 OGNL解析,默认为true。matchingPattern指定想要的元素模式,excludePattern指定拒绝的元素模式,支持正则表达式,默认为接受所有元素。
! S6 g4 d0 K+ ~+ @& Y; q. mhttpheader:根据值栈返回自定义的HttpHeader,status指定响应状态(就是指response.sendError(int i)重定向到500等服务器的状态页)。parse如果为false,header的值不会被OGNL解析,headers,加入到header中的值,例如: <param name=”headers.a”>HelloWorld </param>。可以加多个,这些键-值组成HashMap。
6 g; F5 U0 \. a- y- J ]freemaker:用freemaker模板引擎呈现视图,location指定模板(*.ftl)的位置,parse如果为false,location的值不会被OGNL解析。contentType指定以何中类型解析,默认为text/html。9 Q% z- x l1 a! T6 t
chain:将action的带着原来的状态请求转发到新的action,两个action共享一个ActionContext,actionName指定转向的新的Action的名字。method指定转向哪个方法,namespace指定新的Action的名称空间,不写表示与原Action在相同的名称空间;skipActions指定一个使用 , 连接的Action的name组成的集合,一般不建议使用这种类型的结果。( _0 e; R8 j. E; p- Z
stream:直接向响应中发送原始数据,通常在用户下载时使用,contentType指定流的类型,默认为 text/plain,contentLength以byte计算流的长度,contentDisposition指定文件的位置,通常为 filename=”文件的位置”,input指定InputStream的名字,例如:imageStream,bufferSize指定缓冲区大小,默认为1024字节。
7 N# m# M1 f7 p0 V8 D+ \" h, Lplaintext:以原始文本显示JSP或者HTML,location指定文件的位置,charSet指定字符集。$ ^9 _6 e( q* W5 h
|
|