簡介
這篇文章的目的是給struts用戶介紹struts的好處,同時解釋其配置和用法。我們會對一個健壯的表現層框架下一個定義,同時討論struts框架如何實現這些要求。我們也探究struts中的設計模式的實現,控制器的語義,相關輔助組件的語義;當你需要設計組件和struts框架交互或者為了適應項目的特殊需要擴展struts框架時這些知識將會非常有用。本文介紹的信息可以在http://jakarta.apache.org/struts獲得。
MVC架構
mvc架構把一個應用分離為3部分:模型,視圖,控制器。它通常應用于圖形交互用戶模型的輸入,處理,輸入。
模型:一個模型表示應用程序中需要邏輯處理和操作的數據。在應用程序中任何有穩定狀態的數據都應該放到模型對象中。提供模型的服務必須支持多個客戶端。粗略看看模型的公共方法列表,就應該很容易明白怎么控制模型的行為。模型組織相關的數據和操作并提供特定的服務;這些操作的組合包裝和抽象了業務邏輯。模型接口公布了處理模型狀態的方法和封裝到模型中的復雜業務邏輯的方法。模型服務通過控制器處理模型狀態的查詢或更改。當模型狀態變化時,由模型通知視圖。
視圖:視圖表現模型的狀態。表示層語義被封裝在視圖中,因此同樣的模型數據可以適合多個不同類型的客戶端。當模型變化并通知視圖后,由視圖更新自身。視圖傳遞用戶輸入到控制器。
控制器:控制器獲取和轉換用戶輸入到模型的action中。模型基于用戶輸入返回處理結果給控制器,由控制器選擇適當的視圖顯示。
在基于J2EE的應用程序中,MVC架構通過JavaBeans或EJB處理業務邏輯,并同表示層JSP分離,中間通過基于控制器的servlet聯系。然而,控制器的設計必須適應不同類型的客戶端,包括web客戶端的HTTP請求,無線客戶端的WML,供應商和業務伙伴的基于XML的文檔。拿HTTP請求/相應為例,輸入的HTTP請求被路由到中央控制器,由中央控制器解釋和委托請求到合適的請求處理器。這個也涉及到MVC2架構。框架的請求處理器提供開發人員實現具體的業務邏輯和模型交互。依賴交互的結果,控制器可以決定下一個視圖并產生一個正確的相應。