Struts2學習筆記整理(二)
阿新 • • 發佈:2017-12-22
方式 通過 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執行方法 和結果頁面
- 通過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學習筆記整理(二)