MVC是英文Modle View Controller的簡稱,是一種軟件設計典范,目的是將業務邏輯、數據、頁面視圖代碼分離,達到增加開發效率、降低耦合度、代碼更利于維護的目的。
Spring MVC是一個流行的MVC框架,我們知道Spring核心是解決業務邏輯層和其他各層的松耦合問題,Spring MVC由Spring基礎框架支撐,讓開發JAVA Web 程序變得更簡單。
Spring MVC 框架原理:
1.用戶HTTP請求 ——> DispatcherServlet(調度器根據請求進行調度)
2.DispatcherServlet ——> HandlerMApping(找到對應的處理器)
3.HandlerMapping ——> Controller(調用對應的處理器)
4.Controller ——>業務層(調用業務層完成相應的業務)
5.業務層 ——> ModelAndView(處理結果數據)
6.ModelAndView ——>DispatcherServlet ——>ViewResolver(視圖解析器做處理)
7.ViewResolver ——> View(模型數據顯示) ——>用戶
Spring MVC 實現源碼解析
ContextLoaderListener類:
簡述:ContextLoaderListener類是一個監聽類,在Tomcat啟動后創建一個IOC容器,并將創建的IOC容器存到servletContext中。
web.xml中的配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
springMVC父容器初始化流程圖:
DispatcherServlet類:
簡述:DispatcherServlet是SpringMVC的入口,DispatcherServlet類主要用作職責調度工作,本身主要用于控制流程。
代碼實現的業務邏輯:
DispatcherServlet類本身也是一個Servlet,以下是該類的關系圖:
DispatcherServlet調度器架構原理:
HandlerMapping接口:
簡述:根據調度器的請求找到一個處理器handler,其實現機制簡單來說就是維持了一個url到Controller關系的Map結構。
實現機制:
HandlerMapping的實現機制就是根據request來獲得HandlerExecutionChain,其實就是獲取真正要執行的Controller或者某個具體的方法。HandlerMapping接口提供唯一的方法getHandler(HttpServletRequest request)。
ViewResolver接口:
簡述:ViewResolver的主要作用是把一個邏輯上的視圖名稱解析為一個真正的視圖。
InternalResourceViewResolver類是ViewResolver的實現類,在xml中配置如下:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
View接口:
簡述:View接口的職責就是接收model對象、Request對象、Response對象,并渲染輸出結果給Response對象。






