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