浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程 ...

打印 上一主题 下一主题

主题 941|帖子 941|积分 2823

浅聊一下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请求路径的请求**
  1. <servlet>
  2.     <servlet-name>DispatcherServlet</servlet-name>
  3.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6.     <servlet-name>DispatcherServlet</servlet-name>
  7.     <url-pattern>/</url-pattern>
  8. </servlet-mapping>
复制代码
2. 扩展方式配置
使用此种配置方式,可以将springmvc配置文件,设置到src/main/resource中
① 可通过init-param标签设置SpringMVC配置文件的位置和名称
② 通过load-on-startup标签设置SpringMVC前端控制器DispatcherServlet的初始化时间
  1. <servlet>
  2.     <servlet-name>DispatcherServlet</servlet-name>
  3.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4.    
  5.     <init-param>
  6.         
  7.         <param-name>contextConfigLocation</param-name>
  8.         
  9.         <param-value>classpath:springMVC.xml</param-value>
  10.     </init-param>
  11.    
  12.    
  13.     <load-on-startup>1</load-on-startup>
  14. </servlet>
  15. <servlet-mapping>
  16.     <servlet-name>DispatcherServlet</servlet-name>
  17.    
  18.     <url-pattern>/</url-pattern>
  19. </servlet-mapping>
复制代码
==》 推荐大家使用扩展方式配置SpringMVC
使用扩展方式配置,可以指定其配置文件的位置和名称,更加灵活方便

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的源代码核心部分中带大家看一下其执行流程
  1. package org.springframework.web.servlet.DispatcherServlet
复制代码
这里,我只截取了最核心的部分,展示给大家,已经能足够展示其工作流程了

如果这篇文章对大家理解SpringMVC的工作流程有了一定帮助,希望兄弟一键三连,再次感谢大家!!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

自由的羽毛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表