Spring MVC运行原理
DispatcherServlet:前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。
<!--配置监听器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置servlet-->
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--配置spring配置文件信息-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--配置服务器启动即完成加载-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<!--拦截除了jsp以外的所有请求-->
<url-pattern>/</url-pattern>
</servlet-mapping>
Spring MVC运行原理图:
SpringMVC运行流程:
- 用户发送请求到前端控制器DispatcherServlet,前端控制器调用HandlerMapping处理器映射器,处理器映射器通过xml配置文件或者注解进行查找需要的url判断是否存在并返回给DispatcherServlet。
- DispatcherServlet调用HandlerAdapter处理器适配器,经过适配器调用具体的Controller处理对应的业务逻辑,执行返回一个ModelAndView,HandlerAdapter将Controller执行的结果ModelAndView返回给DispatcherServlet。
- DispatcherServlet将ModelAndView传给视图解析器ViewResolver,解析后返回具体的View,DispatcherServlet根据View进行渲染视图将模型数据填充到视图中,响应给浏览器。
SpringMVC核心组件(四大组件):
- DispatcherServlet:Servlet分发器,接收请求响应结果,整个SpringMVC的入口,整个流程控制的中心,控制其他组件执行,减少组件之间的耦合性。
- HandlerMapping:寻找URL所请求的HandlerMethod,找@RequestMapping()。能够完成客户请求到Controller映射。
- HandlerAdapter:实际调用HandlerMethod的组件。
- ViewResolver:视图解析器,把逻辑视图转换为需要调用的物理视图。
SpringMVC 运行原理时序图: