请简述你对SpringMVC的理解

SpringMVC是一种基于Java语言开发,实现了WebMVC设计模式,请求驱动类型
的轻量级Web框架。
采用了MVC架构模式的思想,通过把Model,View,Controller分离,将Web层进
行职责解耦,从而把复杂的Web应用分成逻辑清晰的几个组件,在SpringMVC中有
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就是用于这种请求重定向场景中的参数传递。
在SpringMVC的九大组件中,涉及到请求处理响应的核心组件分别是:
1.HandlerMapping、
2.HandlerAdapter、
3.ViewResolver
这张图表示这三个组件的整体执行流程,具体调用分为以下几个步骤:
1、HandlerMapping回到调用HandlerAdapter
2、HandlerAdapter会返回ModelAndView
3、ModelAndView根据用户传入参数得到ViewResolvers
4、ViewResolvers会将用户传入的参数封装为View,交给引擎进行渲染。
注意:有大家最熟悉的两个类:ModelAndView和View类并不属于SpringMVC九
大组件之列。

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

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

相关文章

STM32控制数码管从0显示到99

首先 先画电路图吧!打开proteus,导入相关器件,绘制电路图。如下:(记得要保存啊!发现模拟一遍程序就自动退出了,有bug,我是解决不了,所以就是要及时保存,自己重…

计算机组成原理(10)----微程序控制器

目录 1.微程序控制器的设计思想 2.微指令的基本格式 3.微程序控制器的基本结构 (1)控制存储器CM (2)CMAR (3)地址译码 (4)CMDR (5)微地址形成部件 &…

31.云原生Istio可观测性之官网Bookinfo应用实战演示

云原生专栏大纲 文章目录 可观测性kiali介绍Overview(概观)Application(应用维度)workloads(负载维度)Services(服务维度)Istio Config(配置维度) Kiali部署…

音频声波的主观感受

一、响度 声压是“客观”的,响度是“主观”的。 响度又称音量。人耳感受到的声音强弱,它是人对声音大小的一个主观感觉量。响度的大小决定于声音接收处的波幅,就同一声源来说,波幅传播的愈远,响度愈小…

React18原理: React核心对象之Update、UpdateQueue、Hook、Task对象

Update 与 UpdateQueue 对象 1 ) 概述 在fiber对象中有一个属性 fiber.updateQueue是一个链式队列(即使用链表实现的队列存储结构)是和页面更新有关的 2 )Update对象相关的数据结构 // https://github.com/facebook/react/blob/v18.2.0/pa…

VSCode The preLaunchTask ‘C/C++: clang++ 生成活动文件‘ terminated with exit code -1

更改tasks.json文件里面的type为shell 选择g 选择g,然后点回到text.c,按下F5. 得到结果。 文中内容参考: 从零开始手把手教你配置属于你的VS Code_哔哩哔哩_bilibili https://blog.csdn.net/qq_63872647/article/details/128006861

【EasyV】QGIS转换至EasyV

QGIS转换至EasyV 第一步:导入QGIS第二步 坐标系转换第三步 集合修正第四步 重命名字段第五步 导出WGS geojson坐标第六步 导入EasyV 第一步:导入QGIS 第二步 坐标系转换 第三步 集合修正 第四步 重命名字段 第五步 导出WGS geojson坐标 第六步 导入EasyV…

【vue vue-seamless-scroll】解决vue-seamless-scroll鼠标悬浮才滚动或者只滚动一次就失效的问题

解决问题:使用vue-seamless-scroll发现只有鼠标悬浮上去才滚动,而且滚动一次停止了 目标效果: 解决方案: 最后发现是因为数据需要在页面挂载好就赋值,否则页面在加载完成后,数据无法自动滚动。但因为数据…

c++:蓝桥杯的基础算法2(构造,模拟)+练习巩固

目录 构造 构造的基础概念: 模拟 练习1:扫雷 练习2:灌溉 练习3:回文日期 构造 构造的基础概念: 构造算法是一种用于解决特定问题的算法设计方法。在C语言中,构造算法通常涉及到创建一个函数或类来实…

ARM服务器上部署zookeeper集群

由于ARM服务器上部署zookeeper集群,会存在加载不到主类问题,现在把遇到的问题进行总结下,问题如下: [rootnode206 apache-zookeeper-3.5.10]# bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /data1/software/apache-zookeeper-3.5.10/bin/../conf/…

四、Burpsuite工具之proxy模块详解-intercept功能

前言: 过了一个年,感觉好久都没有更新了,今天就从burpsuite的更新开始吧。 前面已经说过了burpsuite的安装和proxy代理的配置,今天说一下proxy模块中非常有用的intercept功能。 intercept功能介绍: intercept是拦截…

Spring之AOP源码解析(中)

前言 在上一篇文章中,我们讲解了Spring中那些注解可能会产生AOP动态代理,我们通过源码发现,完成AOP相关操作都和ProxyFactory这个类有密切关系,这一篇我们将围绕这个类继续解析 演示 作用 ProxyFactory采用策略模式生成动态代理对象,具体生成cglib动态代理还是jdk动态代理,…

APP的UI自动化demo(appium+java)

文章目录 appium连接手机java代码实现-第一版第二版-接入testng和隐式等待显示等待 appium连接手机 准备工作 1、查看连接手机模拟器是否连接成功,获取设备名称 执行命令:adb devices 2、查看android内核版本号—>paltformVersion 执行命令&#xf…

Postman接口关联实战解析

在使用postman做接口测试时,有时候后面的接口需要获取前面接口的某一个返回值做为请求参数,这时就可以使用关联。 如从A接口提取出a字段的值,供B接口的b字段使用。 一个接口的返回报文如下: {"retCode": "0&quo…

SwiftUI 集合视图(Grid)拖放交换 Cell 的极简实现

概览 自从 SwiftUI 横空出世那天起,小伙伴们都感受到了它惊人的简单与便捷。而在本课中,我们将会用一个小“栗子”更直观的让大家体验到它无与伦比简洁的描述性特质: 如上图所示,我们在 SwiftUI 中实现了 Grid 中拖放交换 Cell 的…

基于SpringBoot + Layui的社区物业管理系统

项目介绍 社区物业管理系统是基于java编程语言,springboot框架,idea工具,mysql数据库进行开发,本系统分为业主和管理员两个角色,业主可以登陆系统,查看车位费用信息,查看物业费用信息&#xff0…

2个wordpress优化SEO主题模板

SEO优化wordpress主题 简洁的SEO优化wordpress主题,效果好不好,结果会告诉你,适合SEO公司使用的主题。 https://www.jianzhanpress.com/?p2804 SEO优化海外WordPress主题 简洁的SEO优化海外服务商WordPress主题,为中国制造202…

HTTP REST 方式调用WebService接口(wsdl)

一、WebService接口正常使用SOAP协议调用,测试时常采用SoapUI软件调用,具体如下: 二、由于目前主流web服务逐渐转换为RESTful的形式,且SOAP协议的实现也是基于HTTP协议,故存在通过HTTP调用WebService接口的可能 2.1 …

Flink双流(join)

一、介绍 Join大体分类只有两种:Window Join和Interval Join Window Join有可以根据Window的类型细分出3种:Tumbling(滚动) Window Join、Sliding(滑动) Window Join、Session(会话) Widnow Join。 🌸Window 类型的join都是利用window的机制…