谈谈对Spring MVC的理解

news2024/12/23 17:32:03

问题分析:

        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.coloradmin.cn/o/847170.html

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

相关文章

Kubeadm搭建 Kubernetes

kubeadm搭建整体步骤 1)所有节点进行初始化,安装docker引擎和kubeadm kubelet kubectl 2)生成集群初始化配置文件并进行修改 3)使用kubeadm init根据初始化配置文件生成K8S的master控制管理节点 4)安装CNI网络插件&am…

在centos7下通过docker 安装onlyoffice

因为需要调试网盘,所以今天安装一下centos7的onlyoffice 官方介绍如下: 为了方便,还是通过docker方式来安装onlyoffice了,这里我们采用社区版本了。 1、下载docker安装包 如下: docker pull onlyoffice/documentserv…

Mageia 9 RC1 正式发布,Mandriva Linux 发行版的社区分支

导读Mageia 9 首个 RC 已发布。公告写道,自 2023 年 5 月发布 beta 2 以来,Mageia 团队一直致力于解决许多顽固问题并提供安全修复和新特性。 新版本的控制中心添加了用于删除旧内核的新功能,该功能在 Mageia 9 中默认自动启用,用…

Flowable-网关-事件网关

目录 定义图形标记XML内容使用示例视频教程 定义 通常网关根据连线条件来决定后继路径,但事件网关不同,它提供了根据事件做选择的方式。 事件网关的每个外出顺序流都需要连接至一个捕获中间事件。当流程执行到达事件网关时,网关类 似处于等待…

Elasticsearch——基础(笔记)

文章目录 一、 Elasticsearch二、正向索引与倒排索引三、Elasticsearch与Mysql3.1 文档document3.2 索引库index3.3 与Mysql对比3.4 常见架构 四、部署与分词器4.1 部署单点ES4.2 使用IK分词器4.3 字典词库的拓展 五、操作索引库5.1 创建索引库5.2 增删改索引库 六、文档操作6.…

redis 集群 2:分而治之 —— Codis

在大数据高并发场景下,单个 Redis 实例往往会显得捉襟见肘。首先体现在内存上,单个 Redis 的内存不宜过大,内存太大会导致 rdb 文件过大,进一步导致主从同步时全量同步时间过长,在实例重启恢复时也会消耗很长的数据加载…

如何调教让chatgpt读取自己的数据文件(保姆级图文教程)

提示:如何调教让chatgpt读取自己的数据文件(保姆级图文教程) 文章目录 前言一、如何投喂自己的数据?二、调教步骤总结 前言 chatgpt提示不能读取我们提供的数据文件,我们应该对它进行调教。 一、如何投喂自己的数据? 让chatgpt读…

干货分享 | TSMaster图形模块功能详解(二)—— 以CAN信号为例

在上一章节中,我们主要分享了TSMaster图形模块功能中信号的导入与删除、图形分栏、暂停与启动和禁止图形、高亮信号相关操作、预设、信号与数据的导入与导出6大模块的操作教程。 本章节在上一篇基础上,继续介绍TSMaster图形模块功能第7~10模块的教程。 本…

解决Redis启动时闪退 报错Creating Server TCP listening socket *:6379: bind: No error

找到安装redis的文件夹 在地址输入cmd 依次输入如下 redis-cli.exe shutdown exit redis-server.exe redis.windows.conf

数据结构---跳表

目录标题 为什么会有跳表跳表的原理跳表的模拟实现准备工作find函数insert函数erase函数 测试效率比较 为什么会有跳表 在前面的学习过程中我们学习过链表这个容器,这个容器在头部和尾部插入数据的时间复杂度为O(1),但是该容器存在一个缺陷就是不管数据…

sysstat安装与使用

官方文档 http://sebastien.godard.pagesperso-orange.fr/documentation.html sysstat安装 1.下载源码 https://github.com/sysstat/sysstat 2.编译安装 tar xvf sysstat-xxx.tar.gz ./configure make -j 16 make install3.测试 iostatsysstat使用 sysstat 包包含许多商…

基于Flask的模型部署

基于Flask的模型部署 一、背景 Flask:一个使用Python编写的轻量级Web应用程序框架; 首先需要明确模型部署的两种方式:在线和离线; 在线:就是将模型部署到类似于服务器上,调用需要通过网络传输数据&…

css小练习:案例6.炫彩加载

一.效果浏览图 二.实现思路 html部分 HTML 写了一个加载动画效果&#xff0c;使用了一个包含多个 <span> 元素的 <div> 元素&#xff0c;并为每个 <span> 元素设置了一个自定义属性 --i。 这段代码创建了一个简单的动态加载动画&#xff0c;由20个垂直排列的…

ESD接地实时监控系统有哪些功能

ESD接地实时监控系统是一种用于监测和维护静电放电&#xff08;ESD&#xff09;接地的设备和软件系统。静电放电事件可能会对敏感电子元件、设备或工作环境造成损害&#xff0c;因此对ESD接地进行有效的监控至关重要。 ESD接地实时监控系统主要包括以下几个方面的功能&#xf…

第五次作业 运维高级 构建 LVS-DR 集群和配置nginx负载均衡

1、基于 CentOS 7 构建 LVS-DR 群集。 LVS-DR模式工作原理 首先&#xff0c;来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后&#xff0c;集群某个节点将回复该数据包&#xff0c;并将该数据包…

成功解决ubuntu-22.04的sudo apt-get update一直卡在【0% [Waiting for headers]】

成功解决ubuntu-22.04的sudo apt-get update一直卡在【0% [Waiting for headers]】 问题描述解决方案 问题描述 在下载安装包的时候一直卡在0% [Waiting for headers]&#xff0c;报错信息如下&#xff1a; Get:1 file:/var/cudnn-local-repo-ubuntu1804-8.5.0.96 InRelease […

中科驭数亮相DPU峰会,分享HADOS软件生态实践和大数据计算方案,再获评“匠芯技术奖”

又是一年相逢时&#xff0c;8月4日&#xff0c;第三届DPU峰会在北京开幕&#xff0c;本届峰会由中国通信学会指导&#xff0c;江苏省未来网络创新研究院主办&#xff0c;SDNLAB社区承办&#xff0c;以“智驱创新芯动未来”为主题&#xff0c;沿袭技术创新、生态协同的共创效应&…

vue 路由页面跳转

从index.vue跳转到data.vue index.vue <el-table-column label"客户数" align"center" :show-overflow-tooltip"true"><template slot-scope"scope"><router-link :to"/system/enterprise-data/index/ scope.ro…

人工智能术语翻译(五)

文章目录 摘要QRST 摘要 人工智能术语翻译第五部分&#xff0c;包括Q、R、S、T开头的词汇&#xff01; Q 英文术语中文翻译常用缩写备注Q FunctionQ函数Q-LearningQ学习Q-NetworkQ网络Quadratic Loss Function平方损失函数Quadratic Programming二次规划Quadrature Pair象限…

NSS [MoeCTF 2022]baby_file

NSS [MoeCTF 2022]baby_file 题目源码直接给了 使用data伪协议发现被ban了。 那就换一种伪协议php://filter&#xff0c;猜测flag在同目录下flag.php中或根目录下/flag中 php://filter/readconvert.base64-encode/resourceflag.php读取文件源码&#xff08;针对php文件需要ba…