浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程
浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,Controller(控制器)将View(视图、用户客户端)与Model(javaBean:封装数据)分开构成了MVC,今天我们浅聊一下SpringMVC的相关组件以及通过源码了解器执行流程
SpringMVC的核心组件 :前端控制器 DispatcherServlet
我们需要先在web.xml里面配置DispatcherServlet,现在我给出两种配置方式。默认以及扩展配置
1. 默认配置方式
使用此种方式配置,springmvc配置文件位于WEB-INF下
① SpringMVC的配置文件默认位于WEB-INF下,默认名称为-servlet.xml
② 设置springMVC的核心控制器所能处理的请求的请求路径
** /:所匹配的请求可以是login或.html或.js或.css方式的请求路径,但是/不能匹配.jsp请求路径的请求**
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>2. 扩展方式配置
使用此种配置方式,可以将springmvc配置文件,设置到src/main/resource中
① 可通过init-param标签设置SpringMVC配置文件的位置和名称
② 通过load-on-startup标签设置SpringMVC前端控制器DispatcherServlet的初始化时间
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<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>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>==》 推荐大家使用扩展方式配置SpringMVC
使用扩展方式配置,可以指定其配置文件的位置和名称,更加灵活方便
https://img2023.cnblogs.com/blog/2626899/202309/2626899-20230908230301192-1613539217.png
SpringMVC在执行的时候用到的几个重要组件
[*]HandlerMapping 处理器映射器
① 在SpringMVC中会有很多请求过来,每个请求都需要有一个Handler处理(Controller)
② HandlerMapping的作用便是找到请求向对应的处理器。
[*]HandlerAdapter 处理器适配器
HandlerMapping只是解析URL,通过映射找到对应的Controller,但是真正调用Controller层方法的是HandlerAdapter
[*]View Resolver 视图解析器
解析ModelAndView对象,根据逻辑名称找到视图,并把数据渲染到页面上
SpringMVC的工作流程可以分为几个步骤
[*]用户发起请求,请求先被Servlet拦截转发给SpringMVC框架。
[*]SpringMVC里面的DispatchServlet核心控制器,会接收到请求并转发给HandlerMapping
[*]HandlerMapping负责解析请求,根据请求信息和配置信息找到匹配的Controller。
[*]如果用户配置拦截器,就会按照顺序执行拦截器里面的preHandle方法
[*]由HandlerAdapter执行相应的Contoller层方法,最终返回值被封装成一个ModelAndView对象(视图名称,和视图的模型数据)
[*]视图解析器根据名称找到视图,然后把数据模型填充到视图里面再渲染到页面上
DispatcherServlet源代码解析执行流程
接下来,我将会进入到DispatcherServlet的源代码核心部分中带大家看一下其执行流程
package org.springframework.web.servlet.DispatcherServlet这里,我只截取了最核心的部分,展示给大家,已经能足够展示其工作流程了
https://img2023.cnblogs.com/blog/2626899/202309/2626899-20230908232941604-1237634102.png
如果这篇文章对大家理解SpringMVC的工作流程有了一定帮助,希望兄弟一键三连,再次感谢大家!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]