谈谈对Spring MVC的理解
问题分析:
SpringMVC 是一种基于 Java 语言开发,实现了 Web MVC 设计模式,请求驱动类型 的轻量级 Web 框架。
SpringMVC采用了 MVC 架构模式的思想,通过把 Model,View,Controller 分离,将 Web 层进行职责解耦,从而把复杂的 Web 应用分成逻辑清晰的几个组件,在 Spring MVC 中有 9 大重要的组件。
下面详细说明一下这些组件的作用和初始化方法:
1、MultipartResolver 文件处理器
对应的初始化方法是 initMultipartResolver(context),用于处理上传请求。
2、LocaleResolver 当前环境处理器
其对应的初始化方法是 initLocaleResolver(context)。SpringMVC 主要有两个地方 用 到了 Locale: 一是 ViewResolver 视图解析的时候; 二是用到国际化资源或者 主题的时候。
3、ThemeResolver 主题处理器
其对应的初始化方法是 initThemeResolver(context), 用于解析主题。 也就是解 析样式、图片及它们所形成的显示效果的集合。
4、HandlerMapping 处理器映射器
其对应的初始化方法是 initHandlerMappings(context) , 在 SpringMVC 中会有很 多请求,每个请求都需要一个 Handler 处理。 HandlerMapping 的作用便是找到 请求相应的处理器 Handler 和 Interceptor。
5、HandlerAdapter 处理器适配器
其对应的初始化方法是 initHandlerAdapters(context) 。从名字上看,它就是一个 适配器。HandlerAdapters 要做的事情就是如何让固定的 Servlet 处理方法调用灵 活的 Handler 来进行处理
6、HandlerExceptionResolver 异常处理器
对应的初始化方法是 initHandlerExceptionResolvers(context)。它的主要作用是处 理其他组件产生的异常情况。
7、RequestToViewNameTranslator 视图名称翻译器
其对应的初始化方法是 initRequestToViewNameTranslator(context)。它的作用是 从请求中获取 ViewName。 有的 Handler 处理完后并没有设置 View,也没有设置 ViewName,这时就需要从 request 中获取,而 RequestToViewNameTranslator 就是为 request 提供获取 ViewName 的实现。
8、ViewResolvers 页面渲染处理器
其对应的初始化方法是 initViewResolvers(context) ,ViewResolvers 的主要作用 是将 String 类型的视图名和 Locale 解析为 View 类型的视图。
9、FlashMapManager 参数传递管理器
其对应的初始化方法是 initFlashMapManager(context)。在实际应用中,为了避 免 重复提交,我们可以在处理完 post 请求后重定向到另外一个 get 请求,这个 get 请求可以用来返回页面渲染需要的信息。 FlashMap 就是用于这种请求重定向 场景中的参数传递。
核心组件
在 Spring MVC 的九大组件中,涉及到请求处理响应的核心组件分别是:
1. HandlerMapping、 2. HandlerAdapter、 3. ViewResolver
这张图表示这三个组件的整体执行流程,具体调用分为以下几个步骤:

1、HandlerMapping 回到调用 HandlerAdapter
2、HandlerAdapter 会返回 ModelAndView
3、ModelAndView 根据用户传入参数得到 ViewResolvers
4、ViewResolvers 会将用户传入的参数封装为 View,交给引擎进行渲染。
注意:有大家最熟悉的两个类:ModelAndView 和 View 类并不属于 Spring MVC 九 大组件之列。
相关文章:
谈谈对Spring MVC的理解
问题分析: SpringMVC 是一种基于 Java 语言开发,实现了 Web MVC 设计模式,请求驱动类型 的轻量级 Web 框架。 SpringMVC采用了 MVC 架构模式的思想,通过把 Model,View,Controller 分离,将 Web 层…...
Shopify平台Fulfillment业务模块升级
上图是销售订单、发货单与配送之间的关系图,销售订单可以创建多个发货单,多个发货单(不同销售订单)可以合并在一个配送订单进行发货 接口请求错误记录: 1. The api_client does not have the required permission(s). 2. Required parameter missing or…...
使用 PyTorch 逐步检测单个对象
一、说明 在对象检测任务中,我们希望找到图像中对象的位置。我们可以搜索一种类型的对象(单对象检测,如本教程所示)或多个对象(多对象检测)。通常,我们使用边界框定义对象的位置。有几种方法可以…...
Node.js |(二)Node.js API:fs模块 | 尚硅谷2023版Node.js零基础视频教程
学习视频:尚硅谷2023版Node.js零基础视频教程,nodejs新手到高手 文章目录 📚文件写入🐇writeFile 异步写入🐇writeFileSync 同步写入🐇appendFile / appendFileSync 追加写入🐇createWriteStrea…...
Android 13 Hotseat定制化修改——002 hotseat图标数量修改
目录 一.背景 二.实践方案 一.背景 由于需求是需要自定义修改Hotseat,所以此篇文章是记录如何自定义修改hotseat的,应该可以覆盖大部分场景,修改点有修改hotseat布局方向,hotseat图标数量,hotseat图标大小࿰…...
Flask实现接口mock,安装及使用教程(一)
1、什么是接口mock 主要是针对单元测试的应用,它可以很方便的解除单元测试中各种依赖,大大的降低了编写单元测试的难度 2、什么是mock server 正常情况下:测试客户端——测试——> 被测系统 ——依赖——>外部服务依赖 在被测系统和…...
分立式BUCK电路原理与制作持续更新
目录 一、分立式BUCK电路总体原理图 二、BUCK电路与LDO的区别 三、BUCK电路为什么要加电感 四、BUCK电路要加续流二极管 五、BUCK电路导通与断开的回路 六、电源公式的中的几个表示方式 1、输入功率用Pin表示 2、输出功率用Po表示 3、电源的效率公式:电源的…...
2023年大数据与计算国际会议 (WBDC 2023)| EI、Scoups检索
会议简介 Brief Introduction 2023年大数据与计算国际会议(WBDC 2023) 会议时间:2023年11月17 -19日 召开地点:中国西安 大会官网:www.iwbdc.org 2023年大数据与计算国际会议(WBDC 2023)将围绕“…...
Grafana V10 告警推送 邮件
最近项目建设完成,一个城域网项目,相关zabbix和grafana展示已经完,想了想,不想天天看平台去盯网络监控平台,索性对告警进行分类调整,增加告警的推送,和相关部门的提醒,其他部门看不懂…...
【OpenCV常用函数:视频捕获函数】cv2.VideoCapture
文章目录 1、cv2.VideoCapture() 1、cv2.VideoCapture() 输入视频路径,创建VideoCapture的对象 cv2.VideoCapture(filename) filename: 视频文件的路径视频名扩展名该类的函数有: 1)video.isOpened: 检查视频捕获是否成功 2)vid…...
OptaPlanner笔记2
1.5.3 使用maven 修改pom.xml 导入optaplanner-bom以避免为每一个依赖项重复添加版本号 <project>...<dependencyManagement><dependencies><dependency><groupId>org.optaplanner</groupId><artifactId>optaplanner-bom</art…...
c++文件流详细笔记
c++流 IO :向设备输入数据和输出数据 C++的IO流 设备: 文件控制台特定的数据类型(stringstream)c++中,必须通过特定的已经定义好的类, 来处理IO(输入输出) 文件流 文件流: 对文件进行读写操作 头文件: 类库: ifstream 对文件输入(读文件) ofstream 对文件输出(写…...
CNN经典网络模型之GoogleNet论文解读
目录 1. GoogleNet 1.1 Inception模块 1.1.1 1x1卷积 1.2 辅助分类器结构 1.3 GoogleNet网络结构图 1. GoogleNet GoogleNet,也被称为Inception-v1,是由Google团队在2014年提出的一种深度卷积神经网络架构,专门用于图像分类和特征提取任…...
【C++】开源:CGAL计算几何库配置使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍CGAL计算几何库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…...
Redis分布式锁相关
Redis分布式锁实现Redisson 15问 分布式锁:Redisson源码解析-MultiLock、RedLock 看懂Redisson分布式锁源码,其实并不难...
Nginx环境搭建以及Docker环境部署
目录 Nginx环境搭建 1.首先创建Nginx的目录并进入 2.下载Nginx的安装包 可以通过FTP工具上传离线环境包,也可通过wget命令在线获取安装包 没有wget命令的可通过yum命令安装 3.解压Nginx的压缩包 4.下载并安装Nginx所需的依赖库和包 安装方式一 安装方式二 --- 也…...
2023牛客暑期多校训练营7(C/I/M)
目录 C.Beautiful Sequence I.We Love Strings M.Writing Books C.Beautiful Sequence 思路:显然若得到了a[1],则整个序列a我们都知道了。所以我们要求出第k大的a[1],这个可以利用序列a为不递减序列的性质来得出。 首先,由题…...
阿里云服务器手动搭建FTP教程(Windows操作系统)
阿里云百科介绍使用阿里云服务器搭建FTP教程,云服务器为Windows操作系统,当需要远程连接Windows实例进行文件传输时,可以通过搭建FTP站点实现。本文将介绍如何在Windows实例中搭建FTP站点。 目录 准备工作 步骤一:添加IIS以及F…...
idea+gradle阅读spring5.2.9源码之源码构建报错解决方案
注意 1、先确保gradle版本和spring、jdk版本对应 本文:gradle:5.6.4/spring 5.2.9/jdk1.8(gradle和jdk都要先安装好,gradle还要配置好本地资源文件路径) 2、原来项目乱了的话,先重新导入下载的源码项目 3、进入源码所在根目录&…...
一文详解Git
一. Git 概述 1.1 什么是 Git Git 是一个免费的、开源的分布式版本控制工具, 主要用于管理开发过程中的源代码文件,在软件开发过程中被广泛使用。通过Git仓库来存储和管理这些文件,Git仓库分为二种: 本地仓库:开发人…...
无损视频剪辑解决方案:基于FFmpeg智能封装的核心架构
无损视频剪辑解决方案:基于FFmpeg智能封装的核心架构 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut LosslessCut是一款基于FFmpeg的无损音视频编辑工具&a…...
别再傻傻分不清了!一文搞懂手机里的SIM、USIM、UICC卡到底有啥区别
别再傻傻分不清了!一文搞懂手机里的SIM、USIM、UICC卡到底有啥区别 每次换手机卡时,营业厅工作人员问"要换USIM卡吗",总让人一头雾水——这和SIM卡有什么区别?为什么5G套餐必须换卡?那些年剪过的标准卡、Mic…...
告别重复刷新:Elsevier Tracker让学术投稿进度监控自动化
告别重复刷新:Elsevier Tracker让学术投稿进度监控自动化 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 作为科研工作者,您是否每天都在重复登录Elsevier投稿系统查看稿件状态?E…...
基于单片机的考勤签到系统(有完整资料)
资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T1812305M设计简介:本设计是基于STM32的智能考勤系统,主要实现以下功能:可通过RFID进行打卡、添加卡、删除卡等操作 可通…...
软件数据访问对象管理中的持久化层
软件数据访问对象管理中的持久化层:数据存储的核心枢纽 在现代软件开发中,数据是系统的命脉,而持久化层则是确保数据安全、高效存储与访问的关键组件。持久化层作为数据访问对象(DAO)管理的核心,负责将业务…...
深耕民俗奇幻赛道!彭禺厶解锁竖屏短剧首秀,携《风水之王·我以狐仙镇百鬼》再续“驱邪传奇”
今日,奇幻民俗题材竖屏短剧《风水之王我以狐仙镇百鬼》正式开机,深耕该赛道多年、被誉为“民俗驱邪代言人”的演员彭禺厶惊喜亮相,解锁个人竖屏短剧首秀,瞬间点燃全网民俗奇幻爱好者的热情,相关话题快速升温。凭借《道…...
年薪百万消失!提示词工程 dead?揭秘驾驭AI的真正密码:上下文与治理框架
2023年,“年薪百万招提示词工程师”刷爆全网。大家以为找到了通往未来的金饭碗。 一眨眼的功夫,这个岗位几乎绝迹。 为什么?因为企业花大价钱发现,靠写“小作文”哄着 AI 干活,根本做不出能赚钱的商业产品。聪明绝顶的…...
一文讲清,6S精益管理是什么意思?6S精益管理的核心步骤有哪些?
在工厂车间、办公室、仓库甚至医院,你可能会看到这样的场景:工具随手乱放,下次用时要翻半天;地面有油污、杂物,走路都要小心翼翼;文件资料堆积如山,找个合同像大海捞针。这些看似不起眼的小问题…...
告别Keil,用STVP+ST-LINK给STM32烧录程序的保姆级图文教程
STVPST-LINK实战指南:高效替代Keil的STM32烧录方案 如果你已经厌倦了Keil庞大臃肿的安装包和复杂的配置流程,或者需要在量产环境中快速烧录大量STM32芯片,STVP配合ST-LINK这套组合拳或许能让你眼前一亮。作为一名经历过无数次深夜调试的嵌入式…...
CSS如何实现网页打印样式优化_利用@media print重写布局
根本原因是浏览器默认按屏幕渲染,未适配纸张尺寸、边距和分页逻辑;需用media print清除浮动、禁用溢出、避免分页断裂、重置颜色背景、确保字号≥12px,并优先用padding而非page控制边距。打印时页面内容被截断或空白页太多根本原因是浏览器默…...
