天天看點

SpringMVC01:回顧MVC

回顧MVC

1、什麼是MVC

  • MVC是模型(Model)、視圖(View)、控制器(Controller)的簡寫,是一種軟體設計規範。
  • 是将業務邏輯、資料、顯示分離的方法來組織代碼。
  • MVC主要作用是降低了視圖與業務邏輯間的雙向耦合。
  • MVC不是一種設計模式,MVC是一種架構模式。當然,不同的MVC存在差異。

Model(模型):資料模型,提供要展示的資料,是以包含資料和行為,可以認為是領域模型或JavaBean元件(包含資料和行為),不過現在一般都分離開來:Value Object(資料Dao)和服務層(行為Service)。也就是說模型提供了模型資料查詢和模型資料的狀态更新等功能,包括資料和業務。

View(視圖):負責進行模型的展示,一般就是我們見到的使用者界面,客戶想看到的東西。

Controller(控制器):接收使用者請求,委托給模型進行處理(狀态改變),處理完畢後把傳回的模型資料傳回給視圖,由視圖負責展示。也就是說控制器做了個排程員的工作。

最典型的MVC就是JSP + Servlet + JavaBean的模式。

SpringMVC01:回顧MVC

2、Model1時代

  • 在web早期的開發中,通常采用的都是Model1。
  • Model1中,主要分為兩層,視圖層和模型層。
SpringMVC01:回顧MVC

Model1優點:架構簡單,比較适合小型項目開發。

Model1缺點:JSP職責不單一,職責過重,不便于維護。

3、Model2時代

Model2把一個項目分成三部分,包括視圖、控制、模型。

SpringMVC01:回顧MVC
  1. 使用者發請求
  2. Servlet接收請求資料,并調用對應的業務邏輯方法
  3. 業務邏輯處理完畢,傳回更新後的資料給Servlet
  4. Servlet轉發給JSP,由JSP來渲染頁面
  5. 響應給前端更新後的頁面

職責分析:

Controller:控制器

  1. 取得表單資料
  2. 調用業務邏輯
  3. 轉向指定的頁面

Model:模型

  1. 業務邏輯
  2. 儲存資料的狀态

View:視圖

  1. 顯示頁面

Model2這樣不僅提高了代碼的複用率與項目的擴充性,且大大降低了項目的維護成本。

Model1模式的實作比較簡單,适用于快速開發小規模的項目,Model1中JSP頁面身兼View和Controller兩種角色,将控制邏輯和表現邏輯混雜在一起,進而導緻代碼的重用性非常低,降低了應用的擴充性,增加了維護的難度。Model2消除了Model1的缺點。