【SpringMvc】从Servlet的HttpServlet到SpringMVC的DispathServlet到Springboot的RequestMapping

2023-10-27

1.0

众所周知,一个http请求到我们服务器(web容器/tomcat/jetty(servlet)) 就会约定俗成去访问webapp路径下的web.xml配置文件,首先读取的是两个节点: listener 和 context-param 监听器和上下文参数,然后读取上下文参数并创建一个serveltContext,这个WEB项目所有部分都将共享这个上下文对象。读取context-param, 并随即创建一个监听类对象。WEB容器的加载顺序是:ServletContext -> context-param -> listener -> filter -> servlet。并且这些元素可以配置在文件中的任意位置。这样请求就会去匹配我们定义好的路径url寻找相对的servlet处理类进行匹配处理。所以我们在配置文件里面有很多配置,比如
上下文context-param可以配置到上下文对象共享,来配置数据库,因为它是先于容器启动处理的,
还有监听器,过滤器,字符编码的处理的,敏感字符的处理,还有servlet的处理类,路径,次序,
jsp的欢迎页和404等。

init service(request,response) destory

但是我们一般是去实现他的抽象子类HttpServlet
里面有:

doget dopost

细化请求方式了
至于其他的GenericServlet 知道就行
里面也有几个方法有用到就可以去实现

另外还有可以得到Servlet对象,还有ServletConfig
还有request和response里面的信息。

2.0

当过渡到2.0 Springmvc就帮我们弄了一个核心前端控制器dispathcherServlet,其实就是底层封装了servlet,丰富了功能,区别还是在于我们的配置文件不需要写很多servlet,而是通过一个核心控制类dispatherServlet去接收所有请求,然后同时用处理器映射器,处理器适配器去匹配扫入容器的处理类路径,对比成功即处理。
DispatcherServlet实质也是一个HttpServlet。DispatcherSevlet负责将请求分发,所有的请求都有经过它来统一分发。
容器开启,会去读取web.xml其实就是配置,然后找到springmvc的配置文件,然后springmvc配置文件不是配置了注解扫描吗然后可以转发给dispatherServlet让他根据请求的参数调用HandlerMapping匹配然后调用视图解析器返回

细化
DispathcherServlet拦截后,会调用HandlerMapping进行处理生成Handler再一起返回DispathcherServlet,内容是HandlerMapping的一个(classbeanname/beanname)controllerhandlermapping会把controller层的处理类以map为容器放进去进行注册,然后在根据传进来的url进行查找.处理器映射器根据请求url找到具体的处理器Handler,生成处理器对象及处理器拦截器(如果有则生成),一并返回给DispatcherServlet;

再细化
返回给DispathcerServlet之后,调用 HandlerAdapter处理器适配器,请求执行Handler;HandlerAdapter根据DispathcerServlet传来的controller信息先进行注册再 经过适配调用 具体处理器进行处理业务逻辑Handler执行完成返回ModelAndView给DispatcherServlet;;

再再细化
DispatcherServlet将ModelAndView()传给ViewResolver视图解析器进行解析生成view传回页面;

再再进行细化
DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)再返回客户端

3.0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SpringMvc】从Servlet的HttpServlet到SpringMVC的DispathServlet到Springboot的RequestMapping 的相关文章

  • 如何使用固定数量的工作线程实现简单线程

    我正在寻找最简单 最直接的方法来实现以下内容 主程序实例化worker 执行任务的线程 Only n任务可以同时运行 When n已达到 不再有工人 开始直到计数 正在运行的线程回落到下方n 我觉得Executors newFixedThr
  • 如何在 Java 中访问嵌套的 HashMap?

    我有一个 Java 中的 HashMap 其中的内容 你们可能都知道 可以通过以下方式访问 HashMap get keyname 如果一个 HashMap 位于另一个 HashMap 中 即嵌套的 HashMap 我将如何访问内容 我可以
  • 单元测试组合服务方法

    我正在为一个类编写 junit 单元测试 该类使用以下方法实现公开的接口 public Set
  • Quarkus 不以编程方式选择 bean

    我试图以编程方式选择 bean 但 quarkus 不会注入 bean 并引发异常 不支持吗 public enum ReportType ONE TWO Qualifier Retention RUNTIME Target METHOD
  • Java 读取大文本文件时出现 OutOfMemoryError

    我是 Java 新手 正在读取非常大的文件 需要一些帮助来理解问题并解决它 我们有一些遗留代码 必须对其进行优化才能正常运行 文件大小仅在 10mb 到 10gb 之间变化 只有当文件开始大小超过 800mb 时才会出现启动问题 Input
  • 在命令行java中突出显示文本[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一项任务是重新创建 unix cal 程序 除了一部分之外 相当简单 今天 它突出显示了该数字 我不知道该怎么做 关于如何在 Ja
  • 检查 IPv4 地址是否在私有范围内

    在 Python 中 使用 IPy 模块您可以执行以下操作 gt gt gt ip iptype PRIVATE 有没有一个库或简单的方法可以在 Java 中执行相同的操作 似乎不完全是但是InetAddress有一些 isXX 方法 例如
  • JTextField 和 JTextArea

    JTextField 和 JTextArea 有什么不同 是否可以在一个班级中使用这两个班级 总之 JTextField 是单行文本字段 而 JTextArea 可以跨越多行 文档中清楚地解释了这些差异 文本区 http docs orac
  • OpenNLP 与斯坦福 CoreNLP

    我一直在对这两个包进行一些比较 但不确定该往哪个方向走 我简单地寻找的是 命名实体识别 人 地点 组织等 性别识别 一个不错的训练 API 据我所知 OpenNLP 和斯坦福 CoreNLP 提供了非常相似的功能 然而 Stanford C
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • 在 Junit 测试中使用 ReflectionTestUtils.setField()

    我是 JUnittesting 的新手 所以我有一个问题 谁能告诉我为什么我们使用ReflectionTestUtils setField 在我们的 Junit 测试示例中 正如评论中提到的 java 文档很好地解释了用法 但我还想给你们举
  • 将现有 eclipse 项目导出到 war 文件时出现“模块名称无效”

    我正在尝试将现有 Eclipse 项目导出到 war 文件 但无论我在 WAR Export 对话框页面中输入什么 系统总是返回 模块名称无效 我不知道如何解决这个问题 谢谢您的帮助 我有同样的问题 我修复了它 请按照以下步骤操作 您可以创
  • 查找数组中的组合

    我在java中有一个像这样的二维数组 transmission communication tv television approach memorycode methodact 我需要获得所有组合 例如 transmission appr
  • 如何使用 swagger-codegen-plugin (maven) 生成客户端代码?

    我需要使用 swagger codegen plugin for maven 在 eclipse 中生成服务器存根代码 你能帮忙怎么做吗 以及需要什么配置 在 pom xml 中 我找到了这个答案 您只需要像下面这样更改 pom xml 即
  • 多线程——更快的方法?

    我有一堂有吸气剂的课程getInt 和一个二传手setInt 在某个领域 比如说领域 Integer Int 一个类的一个对象 比如说SomeClass The setInt 这里是同步的 getInt isn t 我正在更新的值Int来自
  • java swing:向 JTree 项目添加自定义图形按钮

    我想在 JTree 中的项目右侧添加一个带有小图标的附加按钮 这可以做到吗 如果是这样 怎么办 thanks Clamp 你在这方面成功了吗 我想做同样的事情 但很难让 JButton 响应用户 设置渲染器以显示按钮的过程很顺利 但所有鼠标
  • Java和手动执行finalize

    如果我打电话finalize 在我的程序代码中的一个对象上 JVM当垃圾收集器处理这个对象时仍然再次运行该方法吗 这是一个大概的例子 MyObject m new MyObject m finalize m null System gc 是
  • Java 中处理异步响应的设计模式

    我读过类似问答的答案 如何在 JAVA 中创建异步 HTTP 请求 https stackoverflow com questions 3142915 how do you create an asynchronous http reque
  • 如何将库添加到 LIBGDX 项目的依赖项 gradle

    一切都在问题中 我已经尝试了在 SO 和其他网站中找到的所有答案 但没有运气 这就是我迄今为止尝试过的 adding compile fileTree dir lib include jar 到我的 build gradle adding
  • Android Google 地图无法在当前主题中找到样式“mapViewStyle”

    添加谷歌地图视图时 我扩展了MapView 使用xml编辑器将其添加到活动中 并将我的谷歌地图api密钥手动添加到布局xml文件中 我的权限在清单文件中允许互联网 我想知道的是 在 xml 编辑器中 我收到错误 无法在当前主题中找到样式 m

随机推荐

  • ubuntu18.04卡在“【ok】Starting Gnome Display Manager“问题处理

    ubuntu18 04卡在 ok Starting Gnome Display Manager 问题处理 目录标题 ubuntu18 04卡在 ok Starting Gnome Display Manager 问题处理 处理 处理 原因
  • 手写浅拷贝和深拷贝

    浅拷贝 浅拷贝是指 一个新的对象对原始对象的属性值进行精确地拷贝 如果拷贝的是基本数据类型 拷贝的就是基本数据类型的值 如果是引用数据类型 拷贝的就是内存地址 如果其中一个对象的引用内存地址发生改变 另一个对象也会发生变化 Object a
  • letcode算法题集锦

    day01 letcode9 买卖股票的最佳时机 给定一个数组 prices 它的第 i 个元素 prices i 表示一支给定股票第 i 天的价格 你只能选择 某一天 买入这只股票 并选择在 未来的某一个不同的日子 卖出该股票 设计一个算
  • ec服务器如何显示4d,ECToolbox软件四种公式在心肌灌注显像中计算左心室射血分数的应用...

    摘要 目的 比较ECToolbox 4种公式 R 0 R 1 R 2 R 3 计算心电图门控心肌灌注显像 ECG gated myocardial perfusion SPECT GMPS 左心室射血分数与平衡法心血池显像 equilibr
  • el-input (输入框)校验 只能输入数字和小数

    备注 我写的是判断输入的是否数字或小数 如果只需判断是否是数字可直接复制elementui官网上的案例即可 1 一定要写 prop aa 不然是没效果的 2 仿照elementui官网 绑定rules 3 写校验 tirgger chang
  • gcj Round 1- A -B题

    输入 E R N v1 v2 vn 有n个工作 没做一个消耗一定的能量 但可以得到R个能量 最多为E 多则去除 初始能量是E 每件工作的收益是 v i u i u i 做i使用的能量 u i gt 0 u i lt E 解 如果规定u i
  • VUE layui之table数据表格使用详细说明

    步骤 一 layui官网下载包 二 将解压的文件放入static文件夹 如果没有就在根目录下新建一个 三 public文件下index html中引入css及js文件 这里注意顺序和你下载的版本号 四 vue页面中使用
  • java3D 第三章 java3D基本图形类详解

    第三章 java 3D基本图形功能 java 3D基本图形功能 java 3D场景式管理 SimpleUniverse类及其方法 ViewingPlatform类及方法 包的关系 Shape3D类及方法 Appearance类及方法 Bra
  • 大数据技术——Scala语言基础

    Scala语言概述 计算机的缘起 数学家阿隆佐 邱奇 Alonzo Church 设计了 入演算 这是一套用于研究函数定义 函数应用和递归的形式系统 入演算被视为最小的通用程序设计语言 入演算的通用性就体现在 任何一个可计算函数都能用这种形
  • 对于stm32,初学者用库函数好还是直接对寄存器操作比较好

    在stm32教学光盘的A里 有两个开发指南 一个是库函数版本 一个是寄存器版本 那么问题来了 作为一个初学者 我应该用库函数好还是直接对寄存器操作比较好 为此我搜集了一些资料 找到了一些可以借鉴的文章 首先 两个都是C语言 从51过渡过来的
  • PBFT代码实现

    本篇文章主要是PBFT共识的简单实现 其中有许多地方都做了简化 PBFT的原理已在上篇文章中描述过 如果对PBFT的原理不太清晰的的可以进行查看 文章地址 共识算法学习总结 代码实现的主要功能有 通过客户端添加区块 使用libp2p的mdn
  • CVTE笔试面试经验分享(硬件)—2020秋招

    秋招流程 投简历 在线笔试 技术面试一 技术面试二 综合面试 投简历 简历是直接在CVTE的校招网上投递的 然后可以选择面试城市和笔试时间 在线笔试 简历筛选通过后就会通知进行线上的笔试 笔试结果各个岗位不同等待的也不同 硬件笔试都是基础
  • 【Linux】基本指令(一)

    目录 一 ls指令 1 不指定目录 ls 2 指定目录 ls huangchao 3 加选项 ls l 4 加选项 ls a 5 选项组合 ls l a 6 选项 指定文件夹 ls l a huangchao 7 ls 指令总结 二 mkd
  • Opencascade安装教程(Visual Studio 2017)

    之前尝试了一次Visual Studio 2019 Opencascade7 5 0的编译 编译成功了 但是在Qt中使用的时候一堆错误没有解决 加之之前的项目需要 所以卸载了VS2019 改安装了VS2017 如果不想找太多错误 不妨可以安
  • Python实现淘宝商品数据爬取——静态网页爬虫(仅供学习,切勿无限制爬取)

    一 关于淘宝网 淘宝网是亚太地区较大的网络零售 商圈 由阿里巴巴集团在2003年5月创立 淘宝网是中国深受欢迎的网购零售平台 拥有近5亿的注册用户数 每天有超过6000万的固定访客 同时每天的在线商品数已经超过了8亿件 平均每分钟售出4 8
  • modelsim do文件简介及仿真波形分析注意事项

    目录 前言 Modelsim指令介绍 步骤一 创建run wave do 步骤二 打开Modelsim 步骤三 do run wave do 步骤4 run sim bat 补充介绍 参考 前言 本文对 do文件进行整理介绍 并在后文引用
  • 简单四边形不等式优化dp(上)

    这里只讨论简单的二维四边形不等式优化dp 和简单的广义决策单调性板子 下文中 优于 一般指的是 不劣于 请自行分辨 四边形不等式 四边形不等式定义为 位于整数集合上的二元函数 f x y f
  • sklearn中主成分分析PCA参数解释

    主成分分析一般用于数据降维 在应用主成分分析包scikit learn时注意以下四点 1 用pca components 可以获取特征向量 且特征向量为行向量 例如W pca components 0 或W pca components 0
  • Python如何生成词云(详细分析)

    前言 今天教大家用wrodcloud模块来生成词云 我读取了一篇小说并生成了词云 先看一下效果图 效果图一 效果图二 根据效果图分析的还是比较准确的 小说中的主人公就是 程理 所以出现次数最多 图中有两种模式 一种是默认的模式 另一种是自己
  • 【SpringMvc】从Servlet的HttpServlet到SpringMVC的DispathServlet到Springboot的RequestMapping

    1 0 众所周知 一个http请求到我们服务器 web容器 tomcat jetty servlet 就会约定俗成去访问webapp路径下的web xml配置文件 首先读取的是两个节点 listener 和 context param 监听