首先指出转发与重定向的区别
转发与重定向的区别
转发:1次请求;服务器行为;地址栏不变;请求域中的数据不丢失
重定向:2次请求;浏览器行为;地址栏变化;请求域中的数据丢失
重用的结果类型:1.dispatcher:(默认值)
使用请求转发,转向一个页面
<action name="action2"><!-- 没有给定动作类,默认的是ActionSupport,没有给定动作方法,默认的是execute -->
<result name="success" >
<param name="location">/success.jsp</param>
</result>
</action>
2.redirect:
使用重定向,转向一个页面
<action name="action2"><!-- 没有给定动作类,默认的是ActionSupport,没有给定动作方法,默认的是execute -->
<result name="success" type="redirect">
<param name="location">/success.jsp</param>
</result>
</action>
3.chain:注意:使用的是请求转发。
a.转发到另一个相同名称空间的动作
<result name="success" type="chain">action2</result>
b.请求转发到不同名称空间的动作
<result name="success" type="chain">
<param name="namespace">/n2</param>
<param name="actionName">action3</param>
</result>
使用的是注入的思想,在执行之重定向之前,会先获取这两个参数的值调用的就是setNamespace("/n2")和setActionName("action3")
4.redirectAction:注意:使用的是重定向
a.重定向到另一个相同名称空间的动作
<result name="success" type="redirectAction">action2</result>
b.重定向到不同名称空间的动作
<result name="success" type="redirectAction">
<param name="namespace">/n2</param>
<param name="actionName">action3</param>
</result>