我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > Struts2 result type
总共48087条微博

动态微博

查看: 791|回复: 0

Struts2 result type

[复制链接]

279

主题

41

听众

689

金钱

版主

该用户从未签到

跳转到指定楼层
楼主
发表于 2016-01-05 14:18:42 |只看该作者 |倒序浏览
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

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表