第一种是转发--dispatcher
这也是默认值,转发到一个页面
<package name="customer" extends="struts-default" namespace="/customer">
<action name="queryAll" class="com.dimples.action.CustomerAction" method="queryAll">
<result name="success">/jsp/show.jsp</result>
</action>
</package>
第二种是重定向--redirect
这种属性可以重定向到一个页面,也可以重定向到一个action
<package name="xixi" extends="struts-default" namespace="/ceshi">
<action name="test">
<result name="success" type="redirect">test2</result>
</action>
<action name="test2">
<result name="success">/jsp/show.jsp</result>
</action>
</package>
解析:当在result标签里写的是一个action的时候,它会自动追加上.action,所以如果当我们配置的url后缀不包括action的时候,我们需要手动加上后缀,比如 test2.do
第三种是专门重定向到一个action--redirectAction
<package name="xixi" extends="struts-default" namespace="/ceshi">
<action name="test">
<result name="success" type="redirectAction">test2</result>
</action>
<action name="test2">
<result name="success">/jsp/show.jsp</result>
</action>
</package>
解析:这种方法会主动在test2后面智能的加上后缀,所以不用担心你url里是怎么配置的。并且跳转到一个新action的时候,它会给你主动加上这个namespace,在这里也就是 /ceshi 。所以浏览器地址变化是由/ceshi/test 转变为/ceshi/test2,所以注意重定向的这个action要和本action在同一个package里。最后就是想说说由一个action跳到一个页面时,地址拦变化是:
/ceshi/test2 --》 /jsp/show.jsp,也就是记住在写namespace时注意有 /,而action的name都是没有/的,然后写页面的时候要带上/
ps:转发和重定向区别
转发:一次请求 url不变 域中参数可传递 服务器行为 只局限于应用内部
重定向:二次请求 url改变 域中参数丢失 浏览器行为 可重定向到任意地址