Struts快速入門(三) (轉)

amyz發表於2007-08-14
Struts快速入門(三) (轉)[@more@]

利用ActionMap的命令:namespace prefix = o ns = "urn:schemas--com::office" />

  提供一個公開的基於XML語句的方法來說明請求URI中路徑與適當的請求之間的對映。這個實現與命令模式[Gof]很相似。以下片斷摘自struts-config.xml,下列宣告用於建立ActionMapping,它是元素的執行時表現。

type="packageName.EditCustomerProfileAction"

name="customerProfileForm"

pe="request"/>

  以下簡要說明上述宣告中用到的屬性。

  pathHTTP請求中虛擬目錄的相對路徑,用於識別這個動作對映。

  type類名,將用於在處理這個請求的時候建立一個請求處理器例項。

  nameBean的邏輯名稱,也叫做表單bean,將用於儲存表單資料。表單bean將用這個名稱儲存在指定的範圍(scope)中。

  scope儲存bean時用請求或會話範圍。

  上例中Path屬性對映到HTML檔案中

元素的action屬性。在上面範例中避免了硬程式碼對映到程式碼內部而且可以方便的看到HTML表單中的servlet路徑如何對映到請求處理器的例項。另外,應用行為和導航語義可以方便的透過修改動作對映來完成。請求處理器是Struts提供的Action類的子類。

  對於HTML

標籤,使用自定義的org..struts..html.FormTag為action屬性動態生成動態URL可以保護HTML文件避免修改虛擬目錄或時的大量變動。對於*.do模式的URL,下面的自定義FormTag  將使用action屬性包含的如下相關URL動態生成一個HTML 標籤:

使用name屬性,行為對映可以宣告一個特定的JavaBean ,其特性將儲存來自HTTP請求的引數,該JavaBean是ActionFrom類的子類。行為對映宣告中的name屬性是在特定範圍內使用哪個ActionForm類的例項儲存的唯一標示。ActionForm子類使用標籤宣告於struts-config.xml檔案中,如下:

參閱“獲取表單資料”章節以得到關於元素和ActionForm類的更多資訊。

模型與請求處理器的相互作用

  Action的一個子類是用於作為提交的請求和模型之間的介面卡。Action子類,也叫做請求處理器,是為每個請求特別建立的。一個動作最初被RequestProcessor解釋,然後輪流例項化一個相應的請求處理器。這個Action類的物件為每個請求特別建立,已經在前面章節中的傳送者闡述。請求處理器實現了命令模式[Gof]。一個終端請求在請求URL中封裝了欲的行為即servlet路徑,該路經資訊隨後被髮送者(RequestProcessor)提取以建立一個相應的請求處理器例項。命令模式消除了介面(UI)對請求處理器的影響。

  基本的Action類提供訪問架構相關資源的常用以及儲存使用其子類的execute(…)方法而產生的錯誤的方法。該錯誤隨即透過採用定製的org.apache.struts.taglib.html.ErrorsTag,被獲取並顯示到HTML表單。請求處理器的execute(…)方法應該包含處理請求引數和相關ActionForm的控制流程,它應該封裝模型相關語義,並且應該在模型操作結果的基礎上提供下一個檢視。請求處理器在第一次建立後就被RequestProcessor捕獲,隨即被設為對其他的提交請求可用;同樣的,請求處理器必須不含有使用者特定的狀態資訊;請求處理器也必須同步化訪問需要訪問的資源。對於一個分散式應用,動作類包括與中的事務邏輯相關聯的控制邏輯且一般採用Business Delegate[Core]物件來實現該目的。事務委託保護請求處理器免於處理訪問分散式元件的複雜度。因為訪問伺服器端元件的邏輯被嵌入到事務委託中,事務委託設計模式促進了請求處理器與伺服器端元件的鬆散耦合。請求處理器由表示層工作的開發者編寫,然而事務委託常常由負責建立事務層服務的開發者編寫。對於小型非分散式應用,動作類或許包含事務邏輯。當分散式處理不是必需的且事務邏輯被嵌入在請求處理器中時,Data Access [Core]可以用於抽象潛在的資料訪問實現,它為請求處理器與資料訪問層提供了鬆散的耦合,從而保護表示層避免在整合層中改變實現。請求處理器基本的Action類提供部分方便的方法,請查閱文件位於:

 

(待續...)

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956529/,如需轉載,請註明出處,否則將追究法律責任。

相關文章