Spring MVC前端
1. MVC瀏覽器
MVC思想是將系統的各個組件進行分類,不一樣的組件扮演不的角色。而後將系統中的各個組件分離到不一樣的層中,這些組件被嚴格限制在其所在層內。同層中組件應該保持內聚性,且大體處於同一抽象級別,而各層之間則以鬆耦合的方式組合在一塊兒,從而保證了良好的封裝性。MVC將一個應用的輸入、處理和輸出安裝Model(模型)、View(視圖)和Controller(控制器)三部分進行分離,這樣一個應用就能夠劃分爲模型層、視圖層和控制層。3個層之間以最小的耦合來協同工做,從而提升了應用系統的可擴展性和維護性。架構
Model(模型)。模型層表明的數據和業務邏輯,它控制着對數據的處理和更新,通常狀況下業務處理的過程對於視圖層和控制層都是黑箱操做,模型層接受視圖的請求數據,並返回最終的處理結果去更新視圖層。app
View(視圖)。視圖層其實就是模型層各個模型的具體表現形式,它經過獲得數據,而後再根據需求來顯示他們。雖然視圖層不對數據進行處理,可是他傳輸到控制層的數據需和模型層的數據類型一致,便是模型數據發生變化時,視圖層也隨之變化。ide
Controller(控制器)。控制層在MVC模式中鏈接視圖層和模型層,它就是將視圖層的交互信息進行過濾等處理以後,在傳送到模型層相應的業務邏輯處理程序進行處理。在WEB應用中,視圖層先給控制層發生消息請求(GET、POST..),控制層接收到請求以後不作任何處理,而是把請求消息傳遞給模型作業務處理。最終根據模型層產生的結果。控制層給瀏覽器(用戶)更新相應的視圖顯示。
spa
圖2-5 MVC三層關係orm
2. MVC特色blog
(1)低耦合性。架構分爲三層,下降了各層之間的額耦合,易於程序的可擴展性和維護性。圖片
(2)一模多視。一個模型能夠對應多個視圖,提升了代碼的可維護性,一旦模型發生變化,方便修改程序。get
(3)分離性。模型返回的數據與現實分離,返回的數據能夠選用任何一種顯示技術,各層之間只負責本身的任務。
3. Spring MVC
Spring MVC顧名思義也是MVC,只是它是創建在Spring基礎之上。如圖2-6所示。
圖2-6 Spring MVC原理圖
Spring MVC的工做流程:
(1)客戶端(瀏覽器)向Spring發起請求。
(2)請求被前端控制器(DispatcherServlet)所攔截,再尋找相應的映射處理器(Handle Mapping)來處理此次請求。
(3)DispatcherServlet根據Handle Mapping選擇某個的控制器(Controller)。
(4)肯定具體的Controller以後,DispatcherServlet將請求傳遞給已選擇的控制器,該控制器處理請求,並將處理的最終結果返回給DispatcherServlet。
(5)DispatcherServlet使用視圖解析器(ViewResolver)解析接收到的模型數據,並肯定要返回的邏輯視圖名。
(6)DispatcherServlet根據視圖名找到相應的視圖並返回給客戶端(瀏覽器)。