JSP的Model1和Model2是sun公司為了更好地指導Web開發(fā)人員進行JavaWeb開發(fā)提出的兩種架構模式,用專業(yè)術語表達就是JSP Model 1和JSP Model 2,它們的本質區(qū)別在于處理批量請求的位置不同。
一、Model1架構模式 1、Model1架構模式簡介 Model1應用了JavaWeb開發(fā)當中的兩種技術,即JSP和JavaBean技術,所以Model1就是JSP+JavaBean模式。其中JSP需要獨自完成響應用戶的請求并將處理結果返回給用戶,同時還需要完成流程的控制處理;而JavaBean進行輔助,如保存從數(shù)據(jù)庫中查詢出來的數(shù)據(jù)等。 JavaBean 是一種使用Java語言編寫的可重用組件。為寫成JavaBean,類必須是具體的和公共的,并且具有無參數(shù)的構造器。JavaBean 通過提供符合一致性設計模式的公共方法將內(nèi)部域的成員屬性暴露給用戶。用戶可以使用JavaBean將功能、處理、值、數(shù)據(jù)庫訪問和其他任何可以用Java代碼創(chuàng)造的對象進行打包,并且其他的開發(fā)者可以通過內(nèi)部的JSP頁面、Servlet、其他JavaBean、Applet程序或者應用來使用這些對象。 JavaBean可分為兩種:一種是有用戶界面(UI,User Interface)的JavaBean;還有一種是沒有用戶界面,主要負責處理事務(如數(shù)據(jù)運算、操縱數(shù)據(jù)庫)的JavaBean。JSP通常訪問的是后一種JavaBean。 2、Model1的體系結構圖 下面對上圖的Model1體系結構圖進行分析。 (1) 首先Web客戶端向JSP頁面發(fā)出request請求; (2) 在JSP頁面取得請求所需的頁面參數(shù); (3) 通過JSP調(diào)用業(yè)務邏輯層的方法并返回結果; (4) 在JSP中完成網(wǎng)頁頁面的渲染; (5) 通過JSP向Web客戶端返回處理結果。 3、Model1架構模式的優(yōu)缺點 (1) 優(yōu)點:架構簡單,比較適合小型項目的開發(fā)?;旧鲜褂?/span>JSP+持久層就可以完成一個小型項目的開發(fā)。 (2) 缺點:JSP頁面有控制頁面顯示的代碼又有與后臺業(yè)務邏輯交互的Java代碼,職責不單一,頁面負擔很重,影響頁面運行速度;而且不方便后期的維護。如果不加選擇地隨意運用Model 1,會導致JSP頁面內(nèi)被嵌入大量的腳本片段或Java代碼,特別是當需要處理的請求量很大時,情況會更為糟糕。
二、Model2架構模式 1、Model2架構模式簡介 Model 2架構模式是一種把JSP與Servlet聯(lián)合使用來實現(xiàn)動態(tài)內(nèi)容服務的方法,所以Model2就是JSP+Servlet+JavaBean模式。它吸取了兩種技術各自的突出優(yōu)點,使用JSP生成表達層的內(nèi)容,使用Servlet完成深層次的處理任務。在Model 2中,Servlet充當控制者的角色,負責管理對請求的處理,創(chuàng)建JSP頁面所需的JavaBean和對象,同時根據(jù)用戶的動作決定把哪個JSP頁面?zhèn)鹘o用戶。特別要注意,在JSP頁面內(nèi)沒有處理邏輯,它僅負責檢索原先由Servlet創(chuàng)建的對象或JavaBean,然后從Servlet中提取動態(tài)內(nèi)容插入到靜態(tài)模板中進行頁面顯示。所以簡單來說,在Model 2中,JSP進行頁面顯示,JavaBean進行邏輯處理,Servlet完成邏輯控制。 2、Model2的體系結構圖 下面對上圖的Model2體系結構圖進行分析。 (1) 首先Web客戶端向Servlet發(fā)出request請求; (2) 通過Servlet取得請求所需的表單數(shù)據(jù); (3) Servlet向業(yè)務邏輯層調(diào)用業(yè)務邏輯方法并返回所需的數(shù)據(jù); (4) Servlet再重定向轉到JSP頁面,在JSP頁面完成頁面渲染; (5) 通過JSP通過response向Web客戶端返回處理結果。 3、Model2架構模式的總結 (1) JavaBean(Model)——模型層:主要職責是完成業(yè)務邏輯和保存數(shù)據(jù)的狀態(tài); (2) JSP(View)——視圖層,主要職責是完成頁面顯示; (3) Servlet(Controller)——控制器,主要職責是獲取表單數(shù)據(jù)、調(diào)用業(yè)務邏輯和完成頁面的渲染。 4、Model2架構模式的優(yōu)缺點 (1) 優(yōu)點:清晰地分離了表達和內(nèi)容,明確了角色的定義以及開發(fā)者與網(wǎng)頁設計者的分工,適合大型項目的開發(fā)。 (2) 缺點:分層過多,不適合小型項目的開發(fā)。 5、Model1與Model2的比較 Model1在一定程序上實現(xiàn)了MVC的設計理念,即JSP將控制層與表示層合二為一,JavaBean則為模型層。這樣的話當然還是將控制層從JSP中單獨劃分出來比較好。 Model2則是將控制層(Servlet)單獨地劃分出來了,專門負責業(yè)務流程的控制,響應頁面的請求,創(chuàng)建所需的JavaBean實例,并將處理后的數(shù)據(jù)再返回給JSP。這樣層次分明,不同開發(fā)人員的職責分工明確,所以項目越復雜,使用Model 2架構模型的好處就越大。
三、三層架構模型 將Model2中的數(shù)據(jù)訪問部分再次抽離出來得到持久化邏輯層,可以得到經(jīng)典的三層架構模型。如下圖所示。 (1) 以上為非常經(jīng)典的三層結構模型: 表示層:JSP/Servlet 業(yè)務邏輯層:業(yè)務規(guī)則 持久化層:主要是包裝持久化邏輯 (2) 抽取出持久化層的好處:主要是為了持久化層的改變不會影響業(yè)務邏輯層,從而更好地劃分職責。 (3) 表示層、業(yè)務邏輯層、持久化層是自上而下的依賴關系,而且通常是單向依賴,最好依賴于抽象的東西。
參考資料: (1) 《JSP Model1與JSP Model2的區(qū)別》,網(wǎng)址:http://blog.sina.com.cn/s/blog_67c5640b0100xlyc.html (2) 《JSP的Model1和Model2體系介紹》,網(wǎng)址:http://blog.163.com/rui_uk/blog/static/269596312007341178266/ |
|