天天看點

javaEE中Struts架構關于業務控制器Action詳解(四)

本文部分文案參考書籍

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方法。

繼續閱讀