目錄
- 簡介
- 名詞解釋
- MVC(model-view-controller)概念
- spring MVC 運行原理
1. 簡介:
是一種基於Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型
2. 名詞解釋
名詞 |
作用 |
前端控制器(DispatcherServlet) |
所有的請求都有經過它來統一分發,是整個流程控制的中心,請求 會被分發給對應的 Handler |
處理器映射器(HandlerMapping) |
解析請求鏈接,然後根據請求鏈接找到執行這個請求的類(HandlerMapping 所說的 handler) |
處理器(Handler) |
是繼DispatcherServlet前端控制器的後端控制器,在DispatcherServlet的控制下Handler對具體的用戶請求進行處理 |
處理器適配器(HandlerAdapter) |
調用具體的方法對用戶發來的請求來進行處理 |
頁面控制器(Controller) |
處理用戶請求,完成後返回 ModelAndView 對象給 DispatcherServlet 前端控制器 |
視圖解析器(ViewResolver) |
解析 MdoelAndView,將 MdoelAndView 中的邏輯視圖名變爲一個真正的 View 對象,並將 MdoelAndView 中的 Model 取出 |
3. MVC(model-view-controller)概念
名詞 |
作用 |
model(模型) |
數據模型,提供了模型數據查詢和模型數據的狀態更新等功能,包括數據和業務 |
view(視圖) |
負責進行模型的展示,一般就是我們見到的用戶界面,客戶想看到的東西 |
controller(控制器) |
接收用戶請求,委託給模型進行處理(狀態改變),處理完畢後把返回的模型數據返回給視圖,由視圖負責展示 |
4. spring MVC 運行原理
4.1 核心架構流程
4.2 流程說明
- 用戶發送請求,由DispatcherServlet接收
- 前端控制器收到請求後自己不進行處理,而是委託給其他的解析器進行處理,作爲統一訪問點,進行全局的流程控制
- DispatcherServlet——>HandlerMapping,HandlerMapping將會把請求映射爲HandlerExecutionChain對象(包含一個Handler處理器(頁面控制器)對象、多個HandlerInterceptor攔截器)對象,通過這種策略模式,很容易添加新的映射策略
- DispatcherServlet——>HandlerAdapter,將handler當參數傳入,HandlerAdapter將會把處理器包裝爲適配器,從而支持多種類型的處理器,即適配器設計模式的應用,從而很容易支持很多類型的處理器
- handler中包含了controller等參數,進行處理請求
- 返回生成的modelAndView處理結果
- 返回結果給dispatcherServlet
- HandlerAdapter——>處理器功能處理方法的調用,HandlerAdapter將會根據適配的結果調用真正的處理器的功能處理方法,完成功能處理;並返回一個ModelAndView對象(包含模型數據、邏輯視圖名);
- 返回處理結果
- ModelAndView的邏輯視圖名——> ViewResolver, ViewResolver將把邏輯視圖名解析爲具體的View,通過這種策略模式,很容易更換其他視圖技術
- View——>渲染,View會根據傳進來的Model模型數據進行渲染,此處的Model實際是一個Map數據結構,因此很容易支持其他視圖技術
- 返回控制權給DispatcherServlet,由DispatcherServlet返回響應給用戶,到此一個流程結束
4.3 源碼流程