本文部分文案參考書籍
1、Action在web開發中是應用的核心,是需要由使用者開發和實作的核心元件。
Action的工作職責:取得View界面送出的資料或請求參數。對取得的資料進行資料驗證。對資料進行類型轉換。調用Model對象的業務方法,完成業務處理。取得Model的業務資料并儲存或傳遞給View對象。
很多人會說它和servlet有什麼差別呢?下面就是了:
servlet依賴于servletAPI;而Action可以是一個簡單的java類,依賴于整個javaAPI。
servlet擷取使用者資訊需要代碼,而Action調用set***方法,直接将使用者資料輸入到Action同名屬性中。
Servlet隻能擷取String資料類型,而Action可以直接轉換資料類型,不需要代碼。
Servlet請求方式為do***而Action,預設為excute,也可以編寫多個處理請求
Action可以複用,Servlet的代碼都是在一個方法裡面完成的
servlet調用視圖時必須給出路徑及名稱,耦合度高;Action減少了視圖耦合度
2、Action類的實作可以是一個簡單的POJO,實作Action接口,繼承ActionSupport類
利用POJO時需要兩個條件:提供用于儲存使用者輸入資料的私有屬性,并提供該屬性對應的set***和get***方法;必須要包含無參且傳回字元串類型的公共方法。
實作Action接口:裡面定義了許多固定的傳回的字元,友善後期維護。此時需要滿足三個條件定義類時實作接口;實作excute的方法;規範傳回結果,友善管理和維護
繼承ActionSupport類,此類實作了Action接口
3、Action的配置
Action元素的配置:struts2架構中Action主要在.xml中配置,struts.xml被喻為視圖和Action之間的紐帶,每個Action都是一個業務邏輯單元,Action負責接收用戶端請求,處理用戶端請求,處理結果傳回給用戶端。
<result>
元素的配置:
<result name="邏輯視圖名" type="視圖結果類型"/>
<param name="參數名">參數值</param>
</result>
其中name屬性指定Action傳回的邏輯視圖名稱。
動态方法調用:
這個是通過設定的
struts.ebable.DynamicMethodInvocation=true
他可以指定method屬性,使用通配符。
4、Action的傳值方式:
在此架構中有屬性驅動和模型驅動兩種傳值方式。
屬性驅動(推薦使用):在Action中直接定義各種java基本類型屬性,使與jsp頁面屬性一一對應這樣送出資料就可以填充到Action屬性中。
模型驅動:ModeDrivern模型驅動Action程式其實是将web表單的各個請求資料包含到一個獨立的POJO的實體元件類中,然後通過該類的執行個體獲得使用者表單請求的各個表單參數,要求滿足以下條件:
必須實作ModeDriven接口,并需要提供相應的泛型,這裡就是使用的Java bean
實作getModel方法,其實就是簡單傳回一個泛型對象
在Action中提供一個泛型私有對象,這裡就是簡單定義一個對象并提供相應的getter和setter方法。