1. 程式人生 > >Struts2學習筆記整理(二)

Struts2學習筆記整理(二)

方式 通過 login 學習 優點 span 圖片 cut 通配符

這裏是重點.

Action接口

  • struts2 的Action可以是POJO
  • 為了讓用戶開發的Action更加規範struts2提供了一個Action接口技術分享圖片

ActionSupport基類

  • Struts2為Action接口提供了一個實現類 ActionSupport,定義了 表單域校驗、錯誤信息設置和獲得國際化信息相關一些方法技術分享圖片

我們寫的action可以有以下幾種選擇:

  • Action 可以是 POJO
  • 用戶編寫Action 可以實現Action接口 可以使用結果集常量字符串
  • 用戶編寫Action 可以繼承ActionSupport基類 對請求參數進行校驗 設置錯誤信息 讀取國際化信息
  • execute方法編寫註意細節 public 修飾符 String 返回值 無參數

通過method屬性指定action的執行方法

  • 沒有指定method屬性,默認執行execute方法
  • 通過method屬性,指定調用Action相應方法處理請求

使用通配符配置Action

  • 在配置<action...>元素時,允許在指定name屬性時,使用模式字符串(用"*"代表一個或多個任意字符)
  • 在class、method屬性及<result>子元素中通過 {N} 形式代表前面地N個* 匹配子串技術分享圖片
  • 這裏一個使用通配符的更復雜案例技術分享圖片
  • *_*代表匹配兩個字符串
  • {1} 匹配UserAction 用於執行class
  • {2} 匹配login用於指定method執行方法 和結果頁面
使用Action的動態方法調用
  • 通過url動態指定調用Action哪個方法而無需配置<action>的method屬性
  • 通過 !方法名 指定調用Action哪個方法技術分享圖片
  • struts.xml沒有指定method屬性
  • 但是product!add.action 就會執行ProductAction的add方法

配置默認Action和 配置Action默認處理類

  • 用戶可以為每個package定義一個默認的Action,如果訪問路徑在package沒有匹配<action> 就會執行默認action技術分享圖片
  • 如果配置<action> 沒有指定class屬性,就會執行Action的默認處理類,在struts-default.xml中技術分享圖片
配置處理結果
  • Action處理完用戶請求後,將返回一個普通字符串
  • 整個普通字符串就是一個邏輯視圖名
  • Struts2根據邏輯視圖名,決定響應哪個結果
  • Struts2處理結果使用<result>元素配置局部結果:將<result>作為<action>子元素配置 全局結果:將<result>作為<global-results>元素的子元素配置
  • 配置<result>元素通常需要指定兩個屬性 name 該屬性指定配置邏輯視圖名 type 該屬性指定結果類型
全局結果

當多個action中都使用到了相同result,這時我們應該把result定義為全局結果。struts1中提供了全局forward,struts2中也提供了相似功能:

<package ....>

<global-results>

<result name="message">/message.jsp</result>

</global-results>

</package>

註:局部的會覆蓋全局

Struts1中應用範圍內action的實例 action是單實例(執行時,現在緩存中查找實例,有用,沒有創建新的實例)

Struts2中 應用範圍內action的實例,每個請求都會創建一個action實例

Servlet屬於單實例多線程的應用,實例只在初始化時被加載

多實例比單實例的優點,不會產生並發問題,但執行速度不如單實例

重點結果類型(經常使用到的)

  • struts-default.xml 配置常用結果類型技術分享圖片

結果類型: dispatcher

  • ldispatcher 結果類型是最常用的結果類型, 也是 struts 框架默認的結果類型
  • 該結果類型有一個 location 參數, 它是一個默認參數
  • ldispatcher 結果類型將把控制權轉發給應用程序裏的某個資源.
  • ldispatcher 結果類型不能把控制權轉發給一個外部資源. 若需要把控制權重定向到一個外部資源, 應該使用 redirect 結果類型

結果類型: redirect

  • lredirect 結果類型將把響應重定向到另一個資源, 而不是轉發給該資源.
  • lredirect 結果類型接受下面這些參數: location: 用來給出重定向的目的地 param: 用來表明是否把 location 參數的值視為一個 OGNL 表達式來解釋. 默認值為 true
  • lredirect 結果類型可以把響應重定向到一個外部資源

結果類型: redirectAction

  • lredirectAction 結果類型把響應重定向到另一個 Action
  • redirectAction 結果類型接受下面這些參數 actionName: 指定 “目的地” 動作的名字. 它是默認屬性 namespace: 用來指定 “目的地” 動作的命名空間. 如果沒有配置該參數, Struts 會把當前 Action 所在的命名空間作為 “目的地” 的命名空間

Struts2 Action接受請求參數

  • 作為MVC框架,必須要負責解析HTTP請求參數,並將其封裝到Model對象中
  • Struts2提供了非常強大的類型轉換機制用於請求數據 到 model對象的封裝
  • Struts2 提供三種數據封裝的方式 1Action 本身作為model對象,通過成員setter封裝2創建獨立model對象,頁面通過ognl表達式封裝3.使用ModelDriven接口,對請求數據進行封裝

Action類成員變量setter接收參數

技術分享圖片

創建單獨model對象,頁面OGNL

技術分享圖片

使用ModelDriven接口封裝數據 技術分享圖片

Struts2學習筆記整理(二)