一、dispatcher
(1)为缺省的 result 类型,一般情况下我们在 struts.xml 会这么写:
Xml 代码
<result name="success">/main.jsp</result>
<result name="success">/main.jsp</result> 以上写法使用了两个默认,其完整的写法为:
Xml 代码
<result name="success" type="dispatcher">
<param name="location">/maini.jsp</param>
</result>
<result name="success" type="dispatcher">
<param name="location">/maini.jsp</param>
</result> 第一个默认:type="dispatcher";第二个默认:设置的为 location 参数,location
只能是页面,不能是另一个 action(可用 type="chain"解决)。
(2)实现方式
从 doExecute 方法看出,有三个出口(finalLocation 为要跳转的地址):
pageContext.include(finalLocation);
dispatcher.forward(request, response); (dispatcher 是根据 finalLocation 创建的)
dispatcher.include(request, response);
而我们知道,forward 与 include 都是转发到 context 内部的资源。
二、redirect
(1)可以重定向到一个页面,另一个 action 或一个网址。
Xml 代码
<result name="success" type="redirect">aaa.jsp</result>
<result name="success" type="redirect">bbb.action</result>
<result name="success" type="redirect">www.baidu.com</result>
<result name="success" type="redirect">aaa.jsp</result>
<result name="success" type="redirect">bbb.action</result>
<result name="success" type="redirect">www.baidu.com</result> (2)实现方式: