struts2 中請求轉發與請求重定向方法


 

本文轉自:http://blog.csdn.net/a327736051/article/details/50240491

 

一。Chain Result:
這個result調用另外的一個action,連接自己的攔截器棧和result。

  • actionName (默認) - 被調用的action的名字
  • namespace - 被調用的action的名稱空間. 如果名稱空間為空,這默認為當前名稱空間
  • method - 用於指定目標action的另一個方法被調用. 如果空,默認為excute方法

Redirect Action Result:
這個Result使用ActionMapperFactory提供的ActionMapper來重定位瀏覽器的URL來調用指定的action和(可選的)namespace. 這個Result比ServletRedirectResult要好.因為你不需要把URL編碼成xwork.xml中配置的ActionMapper提供的模式. 這就是說你可以在任意點上改變URL模式而不會影響你的應用程序. 因此強烈推薦使用這個Result而不是標准的redirect result來解決重定位到某個action的情況.

  • ActionName (默認) - 重定位到的action名
  • namespace - action的名稱空間. 如果為null,則為當前名稱空間

Redirect Result

調用{@link HttpServletResponse#sendRedirect(String) sendRedirect}方法來轉到指定的位置. HTTP響應被告知使瀏覽器直接跳轉到指定的位置(產生客戶端的一個新請求). 這樣做的結果會使剛剛執行的action(包括action實例,action中的錯誤消息等)丟失, 不再可用. 這是因為action是建立在單線程模型基礎上的. 傳遞數據的唯一方式就是通過Session或者可以為Ognl表達式的web參數(url?name=value)

  • location (默認) - action執行后跳轉的地址.
  • parse - 默認為true. 如果設置為false, location參數不會被當作Ognl表達式解析.

 

二。當使用type=“redirectAction” 或type=“redirect”提交到一個action並且需要傳遞一個參數時。這里是有區別的: 

a.使用type=“redirect”時,結果應是action配置名+后綴名 
Java代碼 
 

<action name="Login" class="steven.actions.LoginAction"> 
<result name="success" type="redirect">User.action?u_id=${loginBean.u_id}</result> 
</action> 

 

 

b.使用type=“redirectAction”時,結果就只能寫Action的配置名,不能帶有后綴:“.action” 
Java代碼

 

<action name="Login" class="steven.actions.LoginAction">
<result name="success" type="redirectAction">User?u_id=${loginBean.u_id}</result>
</action>




ps:1 redirect:action處理完后重定向到一個視圖資源(如:jsp頁面),請求參數全部丟失,action處理結果也全部丟失。
     2 redirect-action:action處理完后重定向到一個action,請求參數全部丟失,action處理結果也全部丟失。
     3 chain:action處理完后轉發到一個action,請求參數全部丟失,action處理結果不會丟失。

     4 dispatcher 轉發到jsp頁面

 

 

Struts2之結果類型

 

Struts2的結果類型可以在struts2.xml中可以定義:

 

Struts2的結果類型總共有以下幾個(該文件在struts-default.xml):

如果結果類型沒聲明,默認是  dispatcher (請求轉發)

比較重要的幾個類型:

  • dispatcher  ——  請求轉發到一個頁面 (默認),不可以用這種方式轉發到一個action
  • chain           ——  一個action請求轉發至另一個 action
  • redirect       ——  響應重定向到一個頁面
  • redirectAction       —— 一個action響應重定向至另一個 action
  • stream        ——  文件下載

 

struts2.xml中定義的結果類型:一個action 響應重定向至另一個 action

 

${usename} 這種類型實現了動態的值,而不是靜態的,${usename} 的值其實是通過 action1 的getUsename() 獲取,而不是直接通過成員變量獲得的

 

注意:如果結果類型改成 type = “chain”  ,則加了那些攜帶的參數都不會起到作用,因為chain 是請求轉發,還在一次請求內,本來就攜帶了參數,不需要再去聲明,也不可以添加別的參數,不會起到作用,因為一開始表單提交信息后,該次請求的信息以固定。

 

響應重定向可防止表單重復提交


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM