J2EE規範提出了自己的n-tiers結構。
在普通應用中,我們大多會按如下方式劃分:
展示層:系統管理使用者的請求,對使用者的請求做出相應的響應,並向使用者顯示出相應資訊。Struts架構在展示層可以對使用者的請求進行處理,有控制器可以調用下層商務邏輯,可以對異常進行處理,以及對使用者輸入的資訊進行驗證。展示層還可以選擇Velocity、JSF等。
商務邏輯層:負責商務邏輯的實現。Spring架構在商務邏輯層可以處理應用程式的商務邏輯、業務校正、對事務進行管理、管理業務層中各個對象的依賴關係,執行相應的業務程式來實現商務服務。
持久層:負責對資料庫的訪問。Hibernate架構在持久層為JAVA提供了物件導向的持久化機制和查詢服務。可以採用物件導向的方法儲存、更新、刪除資料庫的記錄,以及查詢資料庫資訊。持久層還可以選擇ibatis等
資料層:用來存放業務資料,供上層調用,主要指一些資料庫系統。
經典的ssh(Struts、Spring、Hibernate)這3個架構功能各不相同,根據Web應用的功能層次,可將這3個架構應用到不同的層次,最終來實現各層的功能以完成整合。
Struts應用在展示層、 Spring應用在商務邏輯層、Hibernate在持久層。
說到J2EE的分層結構,就不得不說說MVC設計模式。
MVC設計模式使“模型”、“視圖”、“控制”相分離,降低了組件之間的耦合性,同時“模型”組件可以被系統中的其他組件重複利用,提高了代碼的可重用性。
模型Model:獨立的組件、或者開發模組。在應用中負責商務邏輯的處理。模型將商務邏輯封裝成獨立的模組,而且提供給不同的開發人員使用。而且這些獨立的模組可根據需要進行組裝。
視圖View: 代表和使用者互動的介面。視圖負責 顯示從模型中採集的資料或使用者輸入的資料 和 請求的傳遞,將這些資料和請求傳遞給控制器和模型。
控制器Controller:負責將視圖的需求分發給視圖所依賴的所有模型,並在模型做了改變後,把這種改變分發到模型對應的所有視圖中,視圖中的內容會隨之改變。一個視圖可以依賴多個模型,一個模型可以對應多個視圖。
總之,MVC設計模式的原理是:當有事件發生時,View將用戶端請求發送給Controller,Controller將會改變Model或View。如果Controller改變了Model的資料,所有依賴Model的View都會被Controller通知,View會對Model進行狀態查詢,Model會對狀態查詢做出相應並通知視圖進行改變。同樣,如果Controller改變了View,View會從依賴的Model中擷取相關資料並重新整理View本身。