struts2中result類型有chain、dispatcher、redirect、redirectAction。
1)dispatcher類型:
默認跳轉類型,用於返回一個視圖資源(如JSP)。用於頁面轉發,頁面跳轉過程是同一個過程,Action中的數據一直保存。
如<result name=“success”>/main.jsp</result>與 <result name=“success” type="dispatcher">/main.jsp</result>是相同效果。
2)redirect類型:
用於重定向到一個頁面、action、網址。把一個http返回碼(SUCCESS)以及返回的頁面位置重新發給服務器,由web服務器產生一個新的HTTP請求,產生新的線程,保存在原Action中的數據無法訪問。如果需要訪問,則在action中帶參數,參數爲一個OGNL表達式,此時該變量必須在前action中有set/get方法,使用${變量名}即可訪問到該數據。
如:<result name="topic" type="redirect">/deleteuser.action?topicId=${topicId}</result>
3)redirectAction類型:
與redirect類型用法相同。
<result name="topic" type="redirectAction">
<param name="actionName">findTopics</param> //重定向的action名
<param name="topicId">${topicId}</param> //需要傳遞的參數
<param name="namespace">重定向Action所在的名字空間</param>//若兩個action不在同一個package下,需要配置該參數
</result>
4)chain類型:
用於把相關的幾個action連接起來,共同完成一個功能。處於chain中的action屬於同一個http請求,共享一個ActionContext。
<action name="step1" class="test.Step1Action">
<result name="success" type="chain">step2.action</result>
</action>
<action name="step2" class="test.Step2Action">
<result name="success">finish.jsp</result>
</action>
若action不在同一個package下,需要配置命名空間這個參數。如下
<package name="resultType" namespace="/r" extends="struts-default"> <action name="r1"> <result type="chain"> <param name="actionName">r2</param> <param name="namespace">/pp</param> <param name="method">method123</param> </result> </action> </package> <package name="paramsRedirect" namespace="/pp" extends="struts-default"> <action name="r2"> <result>/1.jsp</result> </action>
5)plaintextj 結果類型:
用於直接在頁面上顯示源代碼
Xml代碼:
<result name="err" type="plaintext">
<param name="location">具體的位置</param>
<param name="charSet">字符規範(如GBK)</param>
</result>