Struts框架之結果頁面的跳轉
阿新 • • 發佈:2018-12-11
1. 結果頁面存在兩種方式
* 全域性結果頁面(有很多時候我們會跳轉到同一頁面,所以我們可以配置一個全域性結果頁面,不管什麼情況都會跳轉到這個頁面)
> 條件:如果<package>包中的一些action都返回success,並且返回的頁面都是同一個JSP頁面,這樣就可以配置全域性的結果頁面。
> 全域性結果頁面針對的當前的包中的所有的Action,但是如果區域性還有結果頁面,會優先區域性的。使用的標籤是
<global-results>
<result>/demo3/suc.jsp</result>
</global-results>
如果返回的是success,則我們統一跳轉到同一頁面。在package標籤中寫如上的global-results標籤。這樣就不用在action表現中寫區域性頁面跳轉了
* 區域性結果頁面(我們在action標籤中寫的result標籤,屬於區域性結果頁面跳轉)
<result>/demo3/suc.jsp</result>
2. 結果頁面的型別
* 結果頁面使用<result>標籤進行配置,包含兩個屬性
> name -- 邏輯檢視的名稱
> type -- 跳轉的型別,值一些,需要掌握一些常用的型別。常見的結果型別去struts-default.xml中查詢。
* dispatcher -- 轉發.type的預設值.Action--->JSP
* redirect -- 重定向. Action--->JSP(這樣request域就無效了)
* chain -- 多個action之間跳轉.從一個Action轉發到另一個Action. Action---Action
* redirectAction -- 多個action之間跳轉.從一個Action重定向到另一個Action. Action---Action
* stream -- 檔案下載時候使用的
舉例說明多個Action之間的跳轉:
書寫Demo3Action類,在該類中書寫了兩個方法,我們演示一下從自己的action中的save跳轉到自己action中的del方法:
package com.huida.action; import com.opensymphony.xwork2.ActionSupport; public class Demo3Action extends ActionSupport{ //現在想要實現從自己Action中的save跳到自己Action中的del //Demo3Action save--->Demo3Action del public String save(){ System.out.println("save"); return SUCCESS; } public String del(){ System.out.println("delete"); return SUCCESS; } }
對action進行配置:
<struts> <package name="default" namespace="/" extends="struts-default"> <action name="demo3Action_*" class="com.huida.action.Demo3Action" method="{1}"><!-- 萬用字元的方式 --> <result name="success" type="redirectAction">/demo3Action_del</result><!-- 從demo1Action中跳轉到suc.jsp頁面,預設的方式為請求轉發的方式。如果在result標籤中設定轉發型別為重定向redirect,那麼在request域中就不能通過put獲取到值 --> </action> </package> </struts>
使用萬用字元的方式進行函式的訪問。啟動瀏覽器,在搜尋欄中輸入:http://localhost:8080/struts2_day02/demo3Action_save進行訪問,訪問結束後會跳轉到 demo3Action中的del方法中。在控制檯會輸出如下,表示對save和del方法的訪問: