前言
MVC模式(Model–view–controller)是軟件工程中的一種軟件架構模式,把軟件系統分爲三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。
MVC模式最早由Trygve Reenskaug在1978年提出,是施樂帕羅奧多研究中心(Xerox PARC)在20世紀80年代爲程序語言Smalltalk發明的一種軟件架構。MVC模式的目的是實現一種動態的程序設計,使後續對程序的修改和擴展簡化,並且使程序某一部分的重複利用成爲可能。除此之外,此模式通過對複雜度的簡化,使程序結構更加直觀。軟件系統通過對自身基本部分分離的同時也賦予了各個基本部分應有的功能。----Wikipedia
DispatcherServlet
- Spring MVC的前端控制器
- 前端的客戶請求,通過DispatcherServlet正式分發到達合適的Controller,來生產所需要的業務數據Model,生產的Model再通過DispatcherServlet傳遞給View,完成最終的頁面呈現。
- MVC將數據的業務邏輯和頁面實現的分離,核心就是通過DispatcherServlet來實現的
Controller
- MVC中的C
- 調用業務邏輯生成Model的地方
HandlerAdapter
- 在DispatcherServlet中最終調用的Controller是以Handler的形式出現的
- HandlerAdapter是一個適配器模式
- 將各種不同類型的Handler適配成DispatcherServlet可以使用的Handler
- 通過HandlerAdapter適配後,DispatcherServlet就可以輕鬆調用控制器(Controller)
HandlerInterceptor
- Interceptor意思是攔截器
- HandlerInterceptor是一個接口,有三個方法:postHandle,preHandle,afterCompletion
HandlerMapping
- 前端控制器與Controller之間映射關係的一種類
- HandlerMapping作用是告訴DispatcherServlet某個請求到來之後,由哪個Controller來響應該請求
- 在HandlerMapping工作完畢之後,給DispatcherServler一個HandlerAdapter,該HandlerAdapter裏面包括的核心的內容是
- 某個具體的Controller的實例
- 該Controller需要被包裹的HandlerInterceptor
- 上述兩項構成一個執行鏈HandlerExecutionChain
HandlerExecutionChain
- 執行鏈條如下:
- preHandle
- Controller method
- postHandle
- afterCompletion
- 所使用的是Java的反射機制
ModelAndView
- Spring MVC中對Model的一種表現形式(還有其他的類:Model,Map)
- 如果Controller中有人使用Map/Model類,在DispatcherServlet都會將其轉換爲ModelAndView
- ModelAndView被認爲是Model的具體表現
ViewResolver
- ViewResolver視圖解析器
- ViewResolver會告訴DispatcherServlet,需要用哪個視圖,進行視圖的呈現
- 幫助DispatcherServlet解析要呈現的正確視圖頁面
View
- MVC中的V
- 各種各樣呈現出來的界面