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