Result Type(用于struts.xml中result元素的type属性的值)
一个提交到服务器的处理通常可以分为两个阶段,
第一个阶段查询服务器状态 (查询或者更新数据库),
第二个阶段选择一个合适的结果页面其返回给用户 (这里要讲的Result的内容)。
Struts2提供了对不同种类返回结果的支持,常见的有JSP,FreeMarker,Velocity等。
Struts2支持的不同类型的返回结果为 :
名字 说明
Chain Result 用来处理Action链
Dispatcher Result 用来转向页面,通常处理JSP
FreeMarker Result 处理FreeMarker模板
HttpHeader Result 用来控制特殊的Http行为
Redirect Result 重定向到一个URL
Redirect Action Result 重定向到一个Action
Stream Result 向浏览器发送InputSream对象,通常用来处理文件下载
Velocity Result 处理Velocity模板
XLS Result 处理XML/XLST模板
PlainText Result 显示原始文件内容,例如文件源代码
S2PLUGINS:Tiles Result 结合Tile使用
1. dispatcher (服务器内部跳转,地址栏为action)
2. redirect (客户端跳转,地址栏变化为jsp)
3. chain (跳转到另外一个action,不能是jsp,地址栏为action)
4. redirectAction (跳转到另外一个action,不能是jsp,地址栏变化为jsp)
5. freemarker
6. httpheader
7. stream
8. velocity
9. xslt
10. plaintext
11. tiles
文档位置:
Global Results(全局结果集)
即为共用的action
配置:
<package name="user" namespace="/user" extends="struts-default">
<global-results>
<result name="mainpage">/main.jsp</result>
</global-results>
<action name="index">
<result>/index.jsp</result>
</action>
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result>/user_success.jsp</result>
<result name="error">/user_error.jsp</result>
</action>
</package>
如果其他包中也需要用到这个全局结果集,需要用到package的extends
<package name="admin" namespace="/admin" extends ="user">
<action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">
<result>/admin.jsp</result>
</action>
</package>
其中默认的package继承struts-default,而struts-default package存在哪?
Dynamic Result(动态结果集)
可以在struts配置文件中去值栈中的值通过”$”。
配置:
<package name="user" namespace="/user" extends="struts-default">
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result>${r} </result>
</action>
</package>
${r}:Ognl表达式,表示在值栈中取得属性r的值
带参数的结果集
一次request只有一个值栈,所以forward中间action共享一个值栈。
redirect是客户端发两次请求,所以不能共享值栈。
Result总结:
返回结果页面:可以是action也可以是jsp
1. 常用四种类型:
a) dispatcher(默认)
b) redirect
c) chain
d) redirectAction
2. 全局结果集
a) global-results | extends
3. 动态结果(了解)
a) 在action中保存一个属性,存储具体的结果location
4. 传递参数
a) 客户端跳转才需要传递
b) ${}表达式(不是EL)