struts2 action重定向

来源:互联网 发布:airbnb 代订陷阱 淘宝 编辑:程序博客网 时间:2024/04/30 08:02

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  ——  请求转发到一个页面 (默认),不可以用这种方式转发到一个action

chain          ——  一个action请求转发至另一个 action

redirect       ——  响应重定向到一个页面,也可以实现响应重定向到action

redirectAction       —— 一个action响应重定向至另一个 action

stream        ——  文件下载

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


响应重定向可防止表单重复提交

一般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>


0 0
原创粉丝点击