Spring MVC 处理请求

news2024/11/24 15:41:50

Servlet初始化

         DispatcherServlet( 前端控制器 ) Spring MVC中最核心的一个类, 它负责请求的行为流转, 接收请求、响应结果, 相当于转发器  。 那么在Servlet的初始化阶段,会调用 init() 方法进行各个组件的初始化操作,该方法 由其父类HttpServletBean负责实现 的.
        
初始化MVC各个组件
HandlerMapping(处理程序映射器)  根据请求的 URL 来查找 Handler
HandlerAdapter(处理程序适配器) 执行Handler .
Handler(处理器 )  处理业务逻辑的 Java 类(我们自己写的 Controller 类)。
ViewResolver(视图解析器)  进行视图的解析,根据视图逻辑名将 ModelAndView 解析成真正的视图( view
View(视图)  View 是一个接口, 它的实现类支持不同的视图类型,如 jsp,freemarker, pdf 等。
MultipartResolver   处理文件上传功能
LocaleResolver   国际化多语言配置
ThemeResolver   主题解析器的接口

HandlerExceptionResolver   生成ModelAndView对象实例

RequestToViewNameTranslator  用来当Controller没有返回View对象或者逻辑视图名称,并且在该方法中没有直接往 response的OutputStream里面写数据, 获取默认视图名称.

MVC执行流程

  1. 用户发送请求到前端控制器(DispatcherServlet)。
  2. 前端控制器 (DispatcherServlet) 收到请求调用处理器映射器 (HandlerMapping),去查找处理器(Handler)。
  3. 处理器映射器(HandlerMapping)找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。
  4. 前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)。
  5. 处理器适配器(HandlerAdapter)去调用自定义的处理器类(Controller)。
  6. 自定义的处理器类(Controller)将得到的参数进行处理并返回结果给处理器适配器(HandlerAdapter)。
  7. 处理器适配器 (HandlerAdapter)将得到的结果返回给前端控制器 (DispatcherServlet)。
  8. 前端控制器(DispatcherServlet)将 ModelAndView 传给视图解析器 (ViewReslover)。
  9. 视图解析器(ViewReslover)将得到的参数从逻辑视图转换为物理视图并返回给前端控制器(DispatcherServlet)。
  10. 前端控制器(DispatcherServlet)调用物理视图进行渲染并返回。
  11. 前端控制器(DispatcherServlet)将渲染后的结果返回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2125336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年9月15日(星期天)骑行古莲村

2024年9月15日 (星期天)骑行古莲村,早8:30到9:00,大观公园门口集合,9:00准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:大观公园门口集合 ,家住东,西,…

IGNAV_NHC分析

extern int nhc(insstate_t *ins,const insopt_t *opt,const imud_t *imu)函数名 insstate_t* ins IO ins state insopt_t* opt I ins options imud_t* imu I imu measurement data return : 1 (ok) or 0 (fail) 用NHC进行约束,其实用NHC做量测去…

Amazon EC2:灵活、可扩展的云计算解决方案

在当今数字化快速发展的时代,企业面临着不断变化的市场需求和技术挑战。为了保持竞争力,许多公司正在转向云计算,以提高业务的灵活性和可扩展性。而在众多云服务提供商中,Amazon Elastic Compute Cloud(EC2&#xff09…

Initializing libiomp5md.dll, but found libiomp5md.dll already initialized

情况一:之前没有任何下载安装等其他异常操作,则直接使用的时候报错了。 可以检查一下自己anaconda的安装路径中是否存在两个该dll文件。比如我在pycharm中使用的是虚拟环境pytoch1.7,在pycharm的右小角可以看到自己当前使用的环境。 找到该环…

发展绿色新质生产力,创维汽车亮相2024国际数字能源展

2024年9月8日,2024国际数字能源展在深圳会展中心(福田)拉开帷幕,展会以“数能先锋 智创未来”为主题,设立7大展区,助力国内外供采链条对接交流。创维光伏储能以及搭载闪放闪充技术的创维汽车亮相此次会展。…

泽众ALM全新升级:多维度优化软件研发管理

泽众ALM(覆盖全生命周期的研发过程管理平台),迎来了新一轮的更新。本次更新涵盖了需求管理、评审中心、环境管理、代码库管理、报工管理等多个模块,进一步提升了软件研发团队的协作效率与项目管理水平。 泽众ALM平台 一、需求管理更加灵活多样 本次更新…

Open-Vocabulary SAM: 分割并交互式识别两万类别。

摘要 CLIP和Segment Anything Model(SAM)是杰出的视觉基础模型(VFMs)。SAM在多个领域的分割任务中表现出色,而CLIP以其零样本识别能力而闻名。本文深入探索了将这两种模型整合到一个统一框架中。具体来说,…

【Linux】Ubuntu 22.04 shell实现MySQL5.7 tar 一键安装

参考 https://blog.csdn.net/qq_35995514/article/details/134350572?spm1001.2014.3001.5501 在原作者基础上做了修改,加了一个删除原有mysql 的脚本 文章目录 一、安装下载**my.cnf 配置文件** 二、执行安装**install_mysql.sh 安装脚本**本机免密脚本 ssh_keyge…

上汽大众:存储成本节约85%,查询性能提升5倍|OceanBase案例

近日,上汽大众汽车有限公司(简称“上汽大众”)的积分卡券等关键业务系统,已成功升级至 OB Cloud 云数据库。借助 OceanBase 原生分布式数据库的卓越性能与先进技术,实现了存储成本的大幅降低,高达85%&#…

解锁多语言洞察力:使用 Python、LangChain 和 Vector Database 翻译数据集

作者:来自 Elastic Jessica Garson 将数据集从一种语言翻译成另一种语言可能是一种强大的工具。你可以深入了解以前可能无法获得的数据集,例如检测新的模式或趋势。使用 LangChain,你可以获取数据集并将其翻译成你选择的语言。翻译数据集后&a…

游戏出海迎新变局——海外游戏市场有哪些新趋势和新机遇?

游戏出海的热度越来越高,也面临着竞争加剧、门槛提升、成本增加的现实环境,游戏出海有哪些新变化和新趋势? 移动游戏出海的主要海外市场 在海外市场分布方面,美日韩仍然是我国移动游戏重要的海外市场,占据了中国出海…

mfc140u.dll丢失有啥方法能够进行修复?分享几种mfc140u.dll丢失的解决办法

你是否曾遇到过这样的情况:当你满怀期待地打开一个应用程序时,却被一个错误提示拦住了去路,提示信息中指出 mfc140u.dll 文件丢失。这个问题可能会让你感到困惑和无助,但是不要担心,本文将为你详细解读 mfc140u.dll 丢…

给孩子选台灯什么品牌好?看儿童护眼灯推荐测评挑选护眼台灯!

儿童的视力健康是每个家庭都非常关注的问题。当前,近视问题在全球范围内日益严重,尤其是在中国,近视率高企不下,并且呈现出年轻化、低龄化的趋势。随着课业负担的增加和电子产品的普及,儿童近视的问题变得更加突出。我…

超490万预订,华为三折叠屏手机凭什么卖爆?

“3nm制程芯片不是消费者买手机的核心理由?” 作者 | 魏 强 编辑 | 卢旭成 9月10日,华为手机在苹果秋季发布会(北京时间9月10日凌晨)之后紧跟着发布华为Mate XT非凡大师(以下简称非凡大师XT)三折叠屏手机,售价从19…

摩托车一键启动系统功能特点

摩托车一键启动的方法是:长按遥控钥匙上的启动按钮,即可启动摩托车发动机‌。这种配置通常需要安装,为骑行者带来了更为舒适的体验‌。 移动管家摩托车一键启动系统具有以下功能特点: ‌智能化‌:无需原车钥匙或原车…

2024年9月10日嵌入式学习

今日主要学习了缓冲帧。 Framebuffer(帧缓冲)是Linux系统为显示设备提供的一套应用程序接口,它将显存抽象为一种设备,允许上层应用程序在图形模式下直接进行显示缓冲区的读写操作。 原理:通过内存映射技术向显存空间…

学习pyqt5相关知识回顾

1. 模块 1.1 import导入 1) 模块:是一系列功能的集合体,模块名.功能名,就可以使用模块的功能 2) 首次导入模块,就会立即执行模块里面的内容 3) 当前名称空间会产生一个名字module,指向module.py产生的名称空间.我们可以使用module.name/函数名,来调用module.py里面的内容. …

计算机网络 --- 【1】欢迎来到计算机网络/计算机网络基本概念/计算机网络、互连网、互联网的区别

目录 一、计算机网络学什么? 二、 什么是计算机网络?计算机网络、互联网(因特网,Internet)、互连网(internet)之间的区别? 2.1 计算机网络的定义 2.2 计算机网络与互连网的区别 2.3 互连网 三、总结部分 一、计算机网络学…

从品牌战略到品牌知名度:实现持续增长和客户忠诚度的关键。

每家公司都希望自家的品牌、产品或服务能在市场上首屈一指。当你问创始人和CEO们他们的愿景时,他们常常会告诉你,他们想要成为行业中的“ 第一”或者成为“ 行业领袖”。 作为市场营销人员,我们都希望我们所运营的品牌能做到这一点——成为第…

python获取双色球数据解析

先用python GET网页源码 这里我们用GET参考的双色球频道_往期回顾​​​​​​ 因为不同的网站源码不一样,主要讲解思路 soup BeautifulSoup(html, html.parser) 用BS解析后,使用 lottery_info soup.find_all(tr)#根据tr标签找到开奖所有的期号行 先找到所有的tr行,因为…