struts2 action重定向
來源:程序員人生 發(fā)布時(shí)間:2014-11-08 08:04:44 閱讀次數(shù):2806次
struts2的結(jié)果類型:
<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中的結(jié)果類型有以下幾種:
<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 ―― 要求轉(zhuǎn)發(fā)到1個(gè)頁面 (默許),不可以用這類方式轉(zhuǎn)發(fā)到1個(gè)action
chain ―― 1個(gè)action要求轉(zhuǎn)發(fā)至另外一個(gè) action
redirect ―― 響應(yīng)重定向到1個(gè)頁面,也能夠?qū)崿F(xiàn)響應(yīng)重定向到action
redirectAction ―― 1個(gè)action響應(yīng)重定向至另外一個(gè)
action
stream ―― 文件下載
注意:如果結(jié)果類型改成 type = “chain” ,則加了那些攜帶的參數(shù)都不會(huì)起到作用,由于chain 是要求轉(zhuǎn)發(fā),還在1次要求內(nèi),本來就攜帶了參數(shù),不需要再去聲明,也不可以添加別的參數(shù),不會(huì)起到作用,由于1開始表單提交信息后,該次要求的信息以固定。
響應(yīng)重定向可避免表單重復(fù)提交
1般action重定向到j(luò)sp,但是有時(shí)會(huì)重定向到另外一個(gè)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";
}
}
如果重定向時(shí)傳遞參數(shù),有以下幾種方式:
<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>
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)