国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 互联网 > struts2 action重定向

struts2 action重定向

来源:程序员人生   发布时间:2014-11-08 08:04:44 阅读次数:2664次

struts2的结果类型:

<action name="loginAction" class="com.itheima.action.LoginAction"> <result name="success" <strong><span style="color:#FF6666;">type="chain"</span></strong>> <param name="actionName">successAction</param> <param name="name">${name}</param> </result> </action>
struts2中的结果类型有以下几种:

<result-types> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/> <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/> <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/> <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/> <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/> <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" /> <result-type name="postback" class="org.apache.struts2.dispatcher.PostbackResult" /> </result-types>

重要的有几下几种:

dispatcher  ――  要求转发到1个页面 (默许),不可以用这类方式转发到1个action

chain          ――  1个action要求转发至另外一个 action

redirect       ――  响应重定向到1个页面,也能够实现响应重定向到action

redirectAction       ―― 1个action响应重定向至另外一个 action

stream        ――  文件下载

注意:如果结果类型改成 type = “chain”  ,则加了那些携带的参数都不会起到作用,由于chain 是要求转发,还在1次要求内,本来就携带了参数,不需要再去声明,也不可以添加别的参数,不会起到作用,由于1开始表单提交信息后,该次要求的信息以固定。


响应重定向可避免表单重复提交

1般action重定向到jsp,但是有时会重定向到另外一个action

首先看下LoginAction.java

package com.itheima.action; public class LoginAction { private String name; public String getName() { return name; } public String execute() { //名字固化,所以不需要setXXX()方法 name="lcl"; return "success"; } }

SuccessAction.java

package com.itheima.action; public class SuccessAction { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String execute() { return "success"; } }



如果重定向时传递参数,有以下几种方式:

<action name="loginAction" class="com.itheima.action.LoginAction"> <result type="redirect">successAction?name=${name}</result> </action> <action name="successAction" class="com.itheima.action.SuccessAction"> <result type="redirect">/login.jsp?name=${name}</result> </action>

<action name="loginAction" class="com.itheima.action.LoginAction"> <result type="redirectAction">successAction?name=${name}</result> </action> <action name="successAction" class="com.itheima.action.SuccessAction"> <result type="redirect">/login.jsp?name=${name}</result> </action>

<action name="loginAction" class="com.itheima.action.LoginAction"> <result type="redirectAction"> <param name="actionName">successAction</param> <param name="name">${name}</param> </result> </action> <action name="successAction" class="com.itheima.action.SuccessAction"> <result type="redirect">/login.jsp?name=${name}</result> </action>
但是下面这类配置不行:

<action name="loginAction" class="com.itheima.action.LoginAction"> <result type="redirect"> <param name="actionName">successAction</param> <param name="name">${name}</param> </result> </action> <action name="successAction" class="com.itheima.action.SuccessAction"> <result type="redirect">/login.jsp?name=${name}</result> </action>


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生