一、前言
在學習JavaWeb的過程中,大家都會接觸到Model1和Model2,歷史的發展過程是Model1 → Model2。那么它們之間有何相同之處和不同之處呢?
二、Model1
Model1使用了兩種技術:JSP+JavaBean。
在Model1模式下,整個Web應用幾乎全部由JSP頁面組成,JSP頁面接受處理客戶端請求,對請求處理后直接做出響應。用少量的JavaBean來處理數據庫連接、數據庫訪問等操作。
優點:架構簡單,比較適合小型項目開發。
缺點:從工程化角度看,它的局限性非常明顯;JSP的職責不單一,身兼View和Controller兩種角色,將控制邏輯職和表現邏輯混雜在一起,職責過重,代碼的可復用性低,不便於維護。
三、Model2
Model2使用了三種技術:JSP+Servlet+JavaBean。
1、JSP的主要作用是顯示頁面。
2、Servlet作為前端控制器,負責接收客戶端發送的請求。它的主要作用是取得表單參數、調用業務邏輯、轉向頁面(轉發或重定向)。
3、JavaBean的主要作用是負責處理業務邏輯、訪問數據庫、保存數據狀態(也就是我們常說的B層、D層、實體層的集合體)。
實際上,Model2就是MVC的一個成功應用。模型(JavaBean)、視圖(JSP)、控制器(Servlet)。
正如上圖所示,Model2下的JSP不在承擔控制器的責任,它僅僅是表現層角色,僅僅用於將結果呈現給用戶。瀏覽器發來的請求與Servlet(控制器)交互,而Servlet負責與后台的JavaBean通信。在Model2模型下,模型(Model)由JavaBean充當,視圖(View)有JSP頁面充當,而控制器(Controller)則由Servlet充當。
優點:職責清晰,各司其職,互不干擾,有利於組件的重用,適合大型的Web項目。
缺點:不適合小型項目、對開發人員要求更高。
(注:圖中所說的業務邏輯實際上是廣義的說法,可以認為就是JavaBean)
四、參考文獻
SpringMVC中文官網:http://springmvc.cn/