首页 > 编程语言 >浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程

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

时间:2023-09-08 23:58:38浏览次数:48  
标签:请求 浅聊 SpringMVC 流程 配置 视图 源码 DispatcherServlet

浅聊一下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请求路径的请求**

<!-- 配置SpringMVC的前端控制器,对游览器发送的请求统一进行处理 默认配置如下:-->
<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的初始化时间

<!-- 配置SpringMVC的前端控制器,对游览器发送的请求统一进行处理 扩展配置如下:-->
<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 通过初始化参数指定SpringMVC配置文件的位置和名称 -->
    <init-param>
        <!-- contextConfigLocation为固定值 -->
        <param-name>contextConfigLocation</param-name>
        <!-- 使用classpath:表示从类路径查找配置文件,例如maven工程中的src/main/resources -->
        <param-value>classpath:springMVC.xml</param-value>
    </init-param>
    <!--
        作为框架的核心组件,在启动过程中有大量的初始化操作要做
        而这些操作放在第一次请求时才执行,会严重影响访问速度
     -->
    <!-- 通过此标签将启动控制DispatcherServlet的初始化时间提前到服务器启动时 -->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <!--
        设置springMVC的前端控制器所能处理的请求的请求路径
        /:所匹配的请求可以是login或.html或.js或.css方式的请求路径
        但是/不能匹配.jsp请求路径的请求
     -->
    <url-pattern>/</url-pattern>
</servlet-mapping>

==》 推荐大家使用扩展方式配置SpringMVC
使用扩展方式配置,可以指定其配置文件的位置和名称,更加灵活方便
image

SpringMVC在执行的时候用到的几个重要组件

  1. HandlerMapping 处理器映射器
    ① 在SpringMVC中会有很多请求过来,每个请求都需要有一个Handler处理(Controller)
    ② HandlerMapping的作用便是找到请求向对应的处理器。

  2. HandlerAdapter 处理器适配器
    HandlerMapping只是解析URL,通过映射找到对应的Controller,但是真正调用Controller层方法的是HandlerAdapter

  3. View Resolver 视图解析器
    解析ModelAndView对象,根据逻辑名称找到视图,并把数据渲染到页面上

SpringMVC的工作流程可以分为几个步骤

  1. 用户发起请求,请求先被Servlet拦截转发给SpringMVC框架。

  2. SpringMVC里面的DispatchServlet核心控制器,会接收到请求并转发给HandlerMapping

  3. HandlerMapping负责解析请求,根据请求信息和配置信息找到匹配的Controller。

  4. 如果用户配置拦截器,就会按照顺序执行拦截器里面的preHandle方法

  5. 由HandlerAdapter执行相应的Contoller层方法,最终返回值被封装成一个ModelAndView对象(视图名称,和视图的模型数据)

  6. 视图解析器根据名称找到视图,然后把数据模型填充到视图里面再渲染到页面上

DispatcherServlet源代码解析执行流程

接下来,我将会进入到DispatcherServlet的源代码核心部分中带大家看一下其执行流程

package org.springframework.web.servlet.DispatcherServlet

这里,我只截取了最核心的部分,展示给大家,已经能足够展示其工作流程了
image

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

标签:请求,浅聊,SpringMVC,流程,配置,视图,源码,DispatcherServlet
From: https://www.cnblogs.com/CodeYHY/p/17688728.html

相关文章

  • Vue源码学习(三):<templete>渲染第二步,创建ast语法树
    好家伙,书接上回 在上一篇Vue源码学习(二):<templete>渲染第一步,模板解析中,我们完成了模板解析现在我们继续,将模板解析的转换为ast语法树 1.前情提要代码已开源https://github.com/Fattiger4399/analytic-vue.git手动调试一遍,胜过我解释给你听一万遍functionstart......
  • springMVC的xml文件配置
    <?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/sc......
  • 接口文档,jwt介绍和构成,jwt签发与认证,base64编码,drf-jwt使用,django-rest-framewor
    1接口文档#作为后端,接口写好了#作为前端,需要使用我们写的接口(移动端,web,桌面端)#后端需要写接口文档#接口文档的展现形式: 1word,md,写好传到公司的某个平台---》前端可以下载2自动生成接口文档---》后端通过配置--》把所写的接口都自动生成---》地址--》访问......
  • 闲转大学生校园二手物品在线交易平台-计算机毕业设计源码+LW文档
    1. 选题目的、意义及研究现状:背景:随着电子商务的发展,网上交易已经步入巅峰时期,交易额总额每年都会被刷新,越来越多的商品交易都转化为或者正在转化为虚拟交易。伴随着学生购买能力的提高,支付能力也越来越高,大学生购买的商品数量也逐渐增多,甚至超出了自己的需求,以至于几乎每个大学生......
  • 酒店预定的系统设计与实现-计算机毕业设计源码+LW文档
    随着计算机信息技术的发展,各种管理系统逐渐用在社会生产生活中,通过系统化管理提高办事流程,节约时间。在酒店,存在许多的服务内容,如客房预定、信息咨询、人员管理等等,这些复杂的业务信息单靠人工管理,费时费力,还容易出错。如果通过酒店管理系统进行系统化管理,可以有效的解决酒店的整个......
  • 课程教学要素管理系统设计与实现-计算机毕业设计源码+LW文档
    1.选题背景、意义随着科技的进步与发展,计算机的诞生给人们的工作和学习带来了极大的改变,人类从工业时代进入了信息时代。今天,计算机对社会的影响不断深入扩大,教育行业也不例外。在此之前,计算机对教育的影响大多局限在科研领域或者计算机领域的教学。从上个世纪七十年代中期,计算......
  • TSINGSEE青犀视频EasyDarwin开源平台源码二次开发报错service not found排查及解决
    TSINGSEE青犀视频开发的EasyDarwin开源平台提供的开源项目,拥有完整的源代码,帮助开发者更快更简单实现流媒体音视频产品功能,实现移动互联网流媒体直播点播。有位用户反馈在Windows环境下的EasyDarwin源码二次开发中,Git拉完源码,出现无法运行的情况,报:servicenotfound源码路径中找不......
  • 小区物业报修系统的设计与实现-计算机毕业设计源码+LW文档
    随着经济的发展,科技的进步,网络逐渐发达,信息产业不断改良,计算机事业也在不断地发展,人们生活水平也得到了提高。随着人们生活节奏的不断加快,高质量的生活水平以及较优越的生活环境越来越成为人们所追求的目标。但是相应的,这样也会加强人们的劳动量,居民的生活节奏也随之慢慢的加快。长......
  • 悬赏任务大厅平台源码定制
      悬赏任务大厅平台软件一款以在线任务发布,接单,派单的系统。它能帮助用户和雇主实现各种任务的互助,该系统软件功能齐全多,需要专业化的管理系统规则机制,和后期的系统升级维护等工作。  在定制开发悬赏任务系统时,需要考虑到以下几点的问题:  1.悬赏任务大厅界面设计:软件......
  • 骑手端后台管理系统app源码
      骑手端app管理软件是基于外卖平台的其中一个端的软件,骑手端的功能从从订单接收、派送分配、路线规划、到订单完成的整个过程。本文主要解析该App源码的关键技术和实现方式。  骑手端的APP软件端,是接当地所有的外卖订单的系统,用户下单后的订单编号,所有的骑手都可以抢单子......