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

这篇具有很好参考价值的文章主要介绍了浅聊一下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请求路径的请求**

<!-- 配置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
使用扩展方式配置,可以指定其配置文件的位置和名称,更加灵活方便
浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程

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

这里,我只截取了最核心的部分,展示给大家,已经能足够展示其工作流程了
浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程

如果这篇文章对大家理解SpringMVC的工作流程有了一定帮助,希望兄弟一键三连,再次感谢大家!!!文章来源地址https://www.toymoban.com/news/detail-700979.html

到了这里,关于浅聊一下SpringMVC的核心组件以及通过源码了解其执行流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大佬,一款小而美的Application组件,了解一下

    Android开发过程中,Application类的角色不容忽视。它不仅是程序启动的入口,同时也代表着整个应用程序的生命周期。在Application中,我们通常执行以下操作: 初始化各种第三方库 注册ActivityLifecycleCallbacks以监控应用的前后台状态 提供全局的Application实例以便在后续代码中使用

    2024年02月13日
    浏览(28)
  • react中的redux的了解,三大核心理念以及三大原则

    1、要学习redux首先我们先了解下函数式编程中的纯函数;我们最基本的javascript符合函数式编程,因此他也有纯函数。 纯函数:在程序中,若一个函数复合下面的条件,那么这个函数就可以被称为纯函数: ⑴这个函数在相同输入值时,需产生相同的输出。纯函数的输出和输入

    2023年04月08日
    浏览(26)
  • OVS核心组件内容以及编译安装

    Open vSwitch(OVS)是一个开源虚拟交换机,用于构建虚拟化和云计算环境中的网络基础设施。它提供了一种灵活、可编程的方式来管理虚拟网络。OVS 支持多种协议,包括 OpenFlow,以及与 Linux 内核中的数据路径交互的方式。 Open vSwitch (OVS) 可以用于构建虚拟化环境中的网络基础设

    2024年02月05日
    浏览(25)
  • Kubernetes技术--Kubernetes架构组件以及核心概念

    1. Kubernetes集群架构组件   搭建一个 Kubernetes环境集群,其架构如下所示: 内容详解: Master : 控制节点,指派任务、决策 Node : 工作节点,实际干活的。 Master组件内容:

    2024年02月10日
    浏览(32)
  • 记录一下小程序自定义导航栏消息未读已读小红点,以及分组件的消息数量数据实时读取

    本案例,Message 身为组件,使用不了任何钩子来重新获取 this.getMessageList() 消息列表 使用 props 父子传参,因为 Message 组件使用不了页面生命周期从而无法拿到传递过来的数据 使用 watch 监听不到 props 更不建议使用本地存储,那样和 props 结果差不多 案例中采用的是发送全局事

    2024年04月10日
    浏览(36)
  • 一篇文章掌握负载均衡Ribbon作用和架构以及核心组件

    目录 1、Ribbon是什么 2、Ribbon的作用 1.集中式LB 2.进程式LB 3、Ribbon负载均衡架构 总结: 4、Ribbon核心组件IRule Spring Cloud Ribbon是基于Netflix Ribbon实现的一套 客户端负载均衡的工具 。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是 提供客户端的软件负载均衡算法,将 NetFl

    2024年01月19日
    浏览(33)
  • flume组件以及通过命令监控大数据平台转态

    可 以 从 官 网 下 载 Flume 组 件 安 装 包 , 下 载 地 址 如 下 URL 链 接 所 示 https://archive.apache.org/dist/flume/1.6.0/ 步骤一:使用 root 用户设置 Flume 环境变量,并使环境变量对所有用户生效。 步骤二:修改 Flume 相应配置文件。 首先,切换到 hadoop 用户,并切换当前工作目录到

    2023年04月24日
    浏览(23)
  • ZooKeeper源码解析——学习ApacheZookeeper原理,掌握其核心组件的数据模型、监听通知机制等

    作者:禅与计算机程序设计艺术 随着互联网的飞速发展,各种信息数据越来越多,数据的存储也越来越依赖于分布式文件系统或NoSQL数据库。而传统的单机数据库往往不具备弹性可扩展性和高可用容错能力,在面对海量数据时难免会遇到性能瓶颈。为了解决这一问题,人们又

    2024年02月10日
    浏览(25)
  • 微搭使用笔记(六) 通过源码组件实现小程序端地图

    微搭官方提供了大量常用组件,但由于微搭本身也是在不断地完善过程中,有些组件还是没有提供,但同时微搭允许用户自定义组件并在应用中使用。 实际场景是这样的,我们需要一个地图页面在上面展示已知设备的信息和位置,这个需求需要用到地图和地图上的markers,而

    2024年02月04日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包