Struts2从一个action转到另一个action的两种方法
在Struts2中,Action處理完用戶請(qǐng)求后,將會(huì)返回一個(gè)字符串對(duì)象,這個(gè)字符串對(duì)象就是一個(gè)邏輯視圖名。Struts?2通過配置邏輯視圖名和物理視圖之間的映射關(guān)系,一旦系統(tǒng)收到Action返回的某個(gè)邏輯視圖名,系統(tǒng)就會(huì)把相應(yīng)的物理視圖呈現(xiàn)給瀏覽者。
?????????
????????? Struts?2的結(jié)果類型決定了Action處理結(jié)束后,下一步將會(huì)調(diào)用那種視圖資源來呈現(xiàn)處理結(jié)果。默認(rèn)是dispatcher,該結(jié)果類型指定使用JSP作為視圖資源。但是我們會(huì)有這樣的要求:要求從一個(gè)Action轉(zhuǎn)到另一個(gè)Action中去。
?????????
????????? ?從一個(gè)Action直接跳到另一個(gè)Action中,Struts提供了兩種結(jié)果類型可以實(shí)現(xiàn):chain、redirect。
?????????
????????? 我們從Servlet中學(xué)到重定向是不能保留參數(shù)的,也就是說重定向了,request對(duì)象就會(huì)無(wú)效了。同樣redirect就像Servlet中的重定向,它也不能夠保留request對(duì)象保存的參數(shù)。但是chain可以。所以兩種的區(qū)別就在于chain能夠保留request對(duì)象,而redirect不可以。
?
struts.xml的配置<package name="mystruts1" extends="struts-default" namespace="/mystruts1"> <!-- 第一個(gè)Action --> <action name="test_*" class="com.action.TestAction" method="{1}"> <result name="text_chain" type="chain">result_resultChain</result> <result name="text_redirect" type="redirect">result_resultRedirect</result> </action> <!-- 第二個(gè)Action --> <action name="result_*" class="com.action.ResultAction" method="{1}"></action> </package>
?
action1:
public class TestAction { public String testChain(){ HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); request.setAttribute("param", "我是chain結(jié)果類型..."); return "text_chain"; } public String testRedirect(){ HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); request.setAttribute("param", "我是redirect結(jié)果類型..."); return "text_redirect"; } }?
?
action2:
public class ResultAction { public String resultChain(){ HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); System.out.println(request.getAttribute("param")); return null; } public String resultRedirect(){ HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); System.out.println(request.getAttribute("param")); return null; } }?所以:
??????????1. 需要保存前一個(gè)action的屬性信息時(shí)使用,保存住action1的request對(duì)象:?
[html] view plaincopyprint?
??????????2. 不保存前一個(gè)action的參數(shù)可以用這種方法:
轉(zhuǎn)載于:https://www.cnblogs.com/a757956132/p/4210488.html
總結(jié)
以上是生活随笔為你收集整理的Struts2从一个action转到另一个action的两种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深圳SQL数据库823报错修复
- 下一篇: (2)海思烧写工具Hitool工具使用