谈谈对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 九 大组件之列。 


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

postgresql|数据库|角色(用户)管理工作---授权和去权以及usage和select两种权限的区别

前言: postgresql做为一个比较复杂的关系型的重型数据库,不管是安装部署,还是后期的运行维护,都还是有比较多的细节问题需要引起关注。 例如,用户权限的合理分配,那么,什么是权限的合理分配呢…

边写代码边学习之numpy

1. numpy.matmul() 用法 matmul() 用于计算两个数组的矩阵乘积。示例如下 def matmul_test():array1 np.array([[[1.0, 3], [1, 1], [2, 3]]])array2 np.array([[2, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0],[1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0], ])result np.matmul(array1, …

用html+javascript打造公文一键排版系统15:一键删除所有空格

现在我们来实现一键删除所有空格的功能。 一、使用原有的代码来实现,测试效果并不理想 在这之前我们已经为String对象编写了一个使用正则表达式来删除所有空格的方法: //功能:删除字符串中的所有空格 //记录:20230726创建 Stri…

Day 25 C++ queue 容器(队列)

文章目录 queue 基本概念定义注意基本概念队头(Front)——指向队列中最早添加的元素的位置。队尾(Rear)——指向队列中最后添加的元素的位置。入队(Enqueue)——将元素添加到队尾。出队(Dequeue…

TCP三次握手四次断开

一、了解TCP 🍅TCP :传输控制协议,是一种面向连接的可靠的传输协议。 什么是可靠的传输协议?如何保障可靠传输? 保证可靠性: 1.确认机制 2.重传输机制什么是面向连接?如何保障面…

zookeeper --- 高级篇

一、zookeeper 事件监听机制 1.1、watcher概念 zookeeper提供了数据的发布/订阅功能,多个订阅者可同时监听某一特定主题对象,当该主题对象的自身状态发生变化时(例如节点内容改变、节点下的子节点列表改变等),会实时、主动通知所有订阅者 …

模仿火星科技 基于cesium+角度测量+高度测量+可编辑

1. 创建提示窗: 启动Cesium应用,地图场景将打开,欢迎您进入编辑模式。 在屏幕的一角,一个友好的提示窗将呈现,随着您的操作,它会为您提供有用的信息和指导。 2. 绘制面积: 轻轻点击鼠标左键&a…

mac安装open3d时候出现错误

在测试open3d是否正常顺利安装时&#xff0c;出现了如下错误&#xff1a; python -c "import open3d as o3d; print(o3d.__version__)" Traceback (most recent call last):File "<string>", line 1, in <module>File "/Users/huangzhe/…

解决selenium的“can‘t access dead object”错误

目录 问题描述 原因 解决方法 示例代码 资料获取方法 问题描述 在python执行过程中&#xff0c;提示selenium.common.exceptions.WebDriverException: Message: TypeError: cant access dead object 原因 原因是代码中用到了frame,获取元素前需要切换到frame才能定位到…

分析一下vue3下会造成响应式丢失的情况

前言 在我们从vue2过渡到vue3的时候&#xff0c;对于数据响应式的变化其实是懵懵懂懂的。从以往直接在data函数里面定义变量到每一次都要使用ref/reactive时&#xff0c;是有些不适应的。但问题不大&#xff0c;毕竟在大前端时代中&#xff0c;如果不及时跟上时代的步伐&#…

动手吧,vue移动端消息滚动组件

先看效果图&#xff1a; 1、模板部分 <transition name"fade-sport"><div class"v-message-roll" v-show"visible"><svg class"v-icon" viewBox"0 0 1024 1024" version"1.1" xmlns"http://…

上传图片视频

分布式文件系统MinIo MinIO提供多个语言版本SDK的支持&#xff0c;下边找到java版本的文档&#xff1a; 地址&#xff1a;https://docs.min.io/docs/java-client-quickstart-guide.html MinIO测试&#xff08;上传、删除、下载&#xff09; public class MinioTest {MinioC…

【数据结构刷题】数组oj

前言:本文章是关于在力扣上面的数组相关面试题的讲解&#xff0c;包括:1.原地移除数组中所有的元素val&#xff0c;要求时间复杂度为O(N)&#xff0c;空间复杂度为O(1),2.删除排序数组中的重复项。3. 合并两个有序数组。一.原地移除数组中所有的元素val 题目: https://leetcod…

狂码三万字 | 三维场景点云理解与重建技术

目录 00 引言 01 点云特征提取与匹配 1.1 传统点云特征提取 1.2 点云深度学习 1.3 点云卷积 1.4 稀疏卷积 1.5 点云Transformer 1.6 点云旋转不变特征提取 1.7 点云匹配 02 场景点云语义分割 2.1 场景表征与数据集 2.1.1 室内场景表征与相关数据集 2.1.2 室外场…

电脑IP地址错误无法上网怎么办?

电脑出现IP地址错误后就将无法连接网络&#xff0c;从而无法正常访问互联网。那么当电脑出现IP地址错误时该怎么办呢&#xff1f; 确认是否禁用本地连接 你需要先确定是否禁用了本地网络连接&#xff0c;如果发现禁用&#xff0c;则将其启用即可。 启用方法&#xff1a;点击桌…

pytest-xdist分布式测试原理浅析

目录 pytest-xdist执行流程&#xff1a; pytest-xdist 模块结构&#xff1a; pytest-xdist分布式测试原理&#xff1a; pytest-xdist源码浅读&#xff1a; pytest-xdist执行流程&#xff1a; 解析命令行参数&#xff1a;pytest-xdist 会解析命令行参数&#xff0c;获取用户…

DROP USER c##xyt CASCADE > ORA-01940: 无法删除当前连接的用户

多创建了一个用户&#xff0c;想要给它删除掉 一 上执行过程&#xff0c;确实删除成功了 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing optionsSQL> DR…

CVPR 2023 | Attention-Based Point Cloud Edge Sampling

注1:本文系“计算机视觉/三维重建论文速递”系列之一,致力于简洁清晰完整地介绍、解读计算机视觉,特别是三维重建领域最新的顶会/顶刊论文(包括但不限于 CVPR, ICCV, ECCV, NeurIPS等)。本次介绍的论文是: CVPR 2023 | Attention-Based Point Cloud Edge Sampling CVPR 2023 | …

【c语言】-- 结构体

&#x1f4d5;博主介绍&#xff1a;目前大一正在学习c语言&#xff0c;数据结构&#xff0c;计算机网络。 c语言学习&#xff0c;是为了更好的学习其他的编程语言&#xff0c;C语言是母体语言&#xff0c;是人机交互接近底层的桥梁。 本章来学习结构体。 让我们开启c语言学习之…

CTF流量题解http4.pcapng

流量分析 导出http 打开报错 验证文件头&#xff0c;发现是zip。 图常片见里文可件能的包16含进:压制缩头包部,word,pdf JPG FF D8 FF E0/FF D8 FF E1 PNG 89 50 4E 47 GIF 47 49 46 38 ZIP 50 4B 03 04 RAR 52 61 72 21 MP3 49 44 33 0 改后缀 使用工具爆破。 git clone git…
最新文章