回顧MVC
1、什麼是MVC
- MVC是模型(Model)、視圖(View)、控制器(Controller)的簡寫,是一種軟體設計規範。
- 是将業務邏輯、資料、顯示分離的方法來組織代碼。
- MVC主要作用是降低了視圖與業務邏輯間的雙向耦合。
- MVC不是一種設計模式,MVC是一種架構模式。當然,不同的MVC存在差異。
Model(模型):資料模型,提供要展示的資料,是以包含資料和行為,可以認為是領域模型或JavaBean元件(包含資料和行為),不過現在一般都分離開來:Value Object(資料Dao)和服務層(行為Service)。也就是說模型提供了模型資料查詢和模型資料的狀态更新等功能,包括資料和業務。
View(視圖):負責進行模型的展示,一般就是我們見到的使用者界面,客戶想看到的東西。
Controller(控制器):接收使用者請求,委托給模型進行處理(狀态改變),處理完畢後把傳回的模型資料傳回給視圖,由視圖負責展示。也就是說控制器做了個排程員的工作。
最典型的MVC就是JSP + Servlet + JavaBean的模式。

2、Model1時代
- 在web早期的開發中,通常采用的都是Model1。
- Model1中,主要分為兩層,視圖層和模型層。
Model1優點:架構簡單,比較适合小型項目開發。
Model1缺點:JSP職責不單一,職責過重,不便于維護。
3、Model2時代
Model2把一個項目分成三部分,包括視圖、控制、模型。
- 使用者發請求
- Servlet接收請求資料,并調用對應的業務邏輯方法
- 業務邏輯處理完畢,傳回更新後的資料給Servlet
- Servlet轉發給JSP,由JSP來渲染頁面
- 響應給前端更新後的頁面
職責分析:
Controller:控制器
- 取得表單資料
- 調用業務邏輯
- 轉向指定的頁面
Model:模型
- 業務邏輯
- 儲存資料的狀态
View:視圖
- 顯示頁面
Model2這樣不僅提高了代碼的複用率與項目的擴充性,且大大降低了項目的維護成本。
Model1模式的實作比較簡單,适用于快速開發小規模的項目,Model1中JSP頁面身兼View和Controller兩種角色,将控制邏輯和表現邏輯混雜在一起,進而導緻代碼的重用性非常低,降低了應用的擴充性,增加了維護的難度。Model2消除了Model1的缺點。