STRUTS 入門教學(1)
1. 介紹
1.1 Model-View-Controller (MVC) 設計模式
FIXME - 需要一個對該模式一般性的介紹。(譯注:可以參考機械工業出版社的《設計模式》。)
1.2 將MVC概念映射到Struts組件中
Struts 的體系結構實現了Model-View-Controller設計模式的概念,它將這些概念映射到web應用程序的組件和概念中.
這一體系結構中每個主要的組件都將在下面做具體的討論。
1.3 Model: 系統狀態和商業邏輯JavaBeans
基於MVC的系統中的 Model 部分可以細分為兩個概念 -- 系統的內部狀態, 能夠改變狀態的行為。用語法術語來說,我們可以把狀態信息當作名詞(事物),把行為當作動詞(事物狀態的改變)。
通常說來,你的應用程序將系統內部的狀態表示為一組一個或多個的JavaBeans,使用屬性(properties)來表示狀態的細節。依靠於你的應用程序的復雜度,這些beans可以是自包含的(以某種方式知道怎樣永久地保存它們的狀態信息),或者可以是正面的(facades),知道當被請求時怎樣從外部數據源(例如數據庫)中取得信息。Entity EJBs通常也用來表示內部狀態。
大型應用程序經常將系統可能的商業邏輯行為表示為可以被維護狀態信息的beans調用的方法。舉個例子,你有一個為每個當前用戶保存在session中的購物車bean,裡面是表示當前用戶決定購買物品的屬性。這個bean有一個checkOut()方法用來驗證用戶的信用卡,將定單發給庫房以選擇貨品和出貨。別的系統分別地表示同樣的行為,或許使用Session EJBs。
在一些小型應用程序中,同樣的行為又可能嵌入到作為Controller一部分的 Action 類中。這在邏輯非常簡單或者並不想要在其它環境中重用這些商業邏輯時是恰當的。Struts框架支持所有這些方法,但建議將商業邏輯(“做什麼”)和 Action 類(“決定做什麼”)分離開。
1.4 View: jsp頁面和表示組件
基於Struts的應用程序中的 View 部分通常使用JSP技術來構建。JSP頁面包含稱為“模版文本”的靜態Html(或XML)文本,加上插入的基於對非凡行為標記解釋的動態內容。JSP環境包括了其用途由JSP規范來描述的一套標准的行為標記,例如 <jsp:useBean> 。另外,還有一個用來定義你自己標記的標准機制,這些自定義的標記組織在“定制標記庫”中。
Struts包括了一個廣闊的便於創建用戶界面,並且充分國際化的定制標記庫,與作為系統 Model 部分一部分的ActionForm beans美妙地相互配合。這些標記的使用將在後面做具體討論。
除了JSP頁面和其包含的行為及定制標記,商業對象經常需要能夠基於它們在被請求時的當前狀態將自己處理成HTML(或XML)。從這些對象處理過的輸出可以很輕易地使用 <jsp:include> 標准行為標記包括在結果的JSP頁面中。
1.5 Controller: ActionServlet和ActionMapping
應用程序的 Controller 部分集中於從客戶端接收請求(典型情況下是一個運行浏覽器的用戶),決定執行什麼商業邏輯功能,然後將產生下一步用戶界面的責任委派給一個適當的View組件。在Struts中,controller的基本組件是一個 ActionServlet 類的servlet。這個servlet通過定義一組映射(由Java接口 ActionMapping 描述)來配置。每個映射定義一個與所請求的URI相匹配的路徑和一個 Action 類(一個實現 Action 接口的類)完整的類名,這個類負責執行預期的商業邏輯,然後將控制分派給適當的View組件來創建響應。
Struts也支持使用包含有運行框架所必需的標准屬性之外的附加屬性的 ActionMapping 類的能力。這答應你保存特定於你的應用程序的附加信息,同時仍可利用框架其余的特性。另外,Struts答應你定義控制將重定向到的邏輯名,這樣一個行為方法可以請求“主菜單”頁面(舉例),而不需要知道相應的JSP頁面的實際名字是什麼。這個功能極大地幫助你分離控制邏輯(下一步做什麼)和顯示邏輯(相應的頁面的名稱是什麼)。
(未完待續)