type="diapatcher Redirect RedirectAction"配置文件struts.xml
一、struts2默认为Dispatcher服务器跳转
Dispatcher结果类型的实现是org.apache.struts2.dispatcher.ServletDispatcherResult,该类的二个属性(property):location和parse,这两个属性可以通过struts.xml配置文件中的result元素的param子元素来设置。param元素的name属性指定结果类型实现类的属性名,param元素的内容是属性的值。例如:
<result name=“success” type=“dispatcher”>
<param name=“location” >/success.jsp</param>
<param name=“parse” >true</param>
</result>
其中location参数用于指定action执行完毕后要转向的目标资源,parse属性是一个布尔类
型的值,如果为true,则解析location参数中的OGNL表达式;如果为false,则不解析。
parse属性的默认值就是true.
<action name=“viewNews” class=“com.ibm.ViewNewsAction”>
<result name=“success” type=“
dispatcher”>
viewNews.jsp?id=${id}</result>
</action>
二、redirect
org.apache.struts2.dispatcher.ServletRedirectResult.在使用redirect
用户要完成一次与服务器之间的交互,浏览器需要完成两次请求
<result name=“success” type=“
redirect”>
viewNews.jsp?id=${id}</result>
①浏览器发出一个请求,struts2框架调用对应的Action实例对请求进行处理;
②Action返回”success”结果码,框架根据这个结果码选择对应的结果类型,在上
图是redirect结果类型;
③ServletRedirectResult在内部使用HttpServletResponse的sendRedirect方法将
请求重定向到目标资源;
④浏览器重新发起一个针对目标资源的新的请求;
⑤目标资源作用为响应呈现给用户。
三、redirectAction
redirectAction结果类型的实现类是org.apache.struts2.dispatcher.ServletActionRedirectResult,该类是
ServletDispatcherResult的子类,因此我们也就可以判断出redirectAction结
果类型和redirect结果类型的后台工作原理是一样的,即都是利用HttpServletResponse的sendRedirect方法将请求重定向到指定的URL。
<result name=“success” type=“
redirectAction”>
viewDishsDetail.action?id=${dish.id}</result>
那么redirect与redirectAction有什么区别呢?
从结果类型的名字上,我们可以大致判断出redirectAction结果类型主要是用
于重定向到action。也就是说,在请求处理完成后,如果你需要重定向到另一
个action,那么建议你使用redirectAction结果类型。