Spring MVC常用功能及注解
目录
一、什么是Spring MVC
1.1 Spring MVC定义
1.2 MVC定义
1.3 MVC和Spring MVC的关系
1.4 Spring MVC的作用
二、Spring MVC的使用
2.1 Spring MVC的创建和连接
2.1.1 @RequestMapping注解
2.1.2 @GetMapping注解
2.1.3 @PostMapping注解
2.2 获取参数
2.2.1 获取单个参数
2.2.2 获取多个参数
2.2.3 获取对象
2.2.4 后端参数重命名
2.2.5 设置参数必传
2.2.6 获取JSON格式对象
2.2.7 获取URL中的参数
2.2.8 获取上传文件
2.2.9 获取Cookie
2.2.10 存储和获取Session
2.2.11 获取Header
2.3 输出数据
2.3.1 返回静态页面
2.3.2 返回text/html
2.3.3 返回JSON对象
2.3.4 请求转发和请求重定向
一、什么是Spring MVC
1.1 Spring MVC定义
官方对Spring MVC的描述:
Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, "Spring Web MVC," comes from the name of its source module (spring-webmvc), but it is more commonly known as "Spring MVC".
总结:Spring MVC全称是Spring Web MVC,是一个基于Servlet的Web框架。
1.2 MVC定义
MVC是Model View Controller的缩写,它是软件工程中的一种软件架构模式,把软件系统分为模型、视图、控制器三给基本部分。

Model:是应用程序中用于处理应用程序数据分析的部分,它通常负责在数据库中存储数据。
View:是应用程序中处理数据显示的部分,通常是依据Model创建的。
Controller:是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
1.3 MVC和Spring MVC的关系
MVC是一种思想,而Spring MVC则是它的具体实现(相当于IoC和DI的关系)。
因此,Spring MVC是一个实现了MVC模式,并实现了Servlet API的Web框架。
1.4 Spring MVC的作用
Spring MVC可以帮助开发者快速构建出基于web的应用程序,并且把应用程序的逻辑划分为模型、视图、控制器,从而更方便程序的维护和测试。
二、Spring MVC的使用
2.1 Spring MVC的创建和连接
Spring MVC项目的创建和Spring Boot项目的创建相同,在创建Spring Boot项目时,选择Spring Web依赖,就相当于是创建了Spring MVC项目。

2.1.1 @RequestMapping注解
@RequestMapping用来注册接口的路由映射的,它既可以修饰类,也可以修饰方法,既可以接收Get请求,也可以接收Post请求。
代码示例:

然后使用postman分别发送Get请求和Post请求:
Get请求:

Post请求:

2.1.2 @GetMapping注解
被@GetMapping注解修饰的方法,只能接收Get请求。
代码示例:

此时,当我们发送Post请求时,就会出现405状态码:不支持该方法

使用@RequestMapping也可以达到同样的效果:

2.1.3 @PostMapping注解
被@PostMapping注解修饰的方法,只能接收Post请求,用法和@GetMapping注解相同。
使用@RequestMapping也可以达到同样的效果:

2.2 获取参数
2.2.1 获取单个参数
在Spring MVC中,可以直接使用方法中的参数来实现用户传参的效果。
代码示例:

使用postman发送请求:

注意:请求中的参数名要和方法的参数名相同,否则无法获取到请求中的参数。
2.2.2 获取多个参数
获取多个参数的方式和获取单个参数的方式相同,使用方法中的形参接收即可。
代码示例:

使用postman发送请求:

注意:请求中的参数如果为基本数据类型,建议方法中使用对应的包装类接收。
如果请求中少传参数时,使用基本数据类型接收就会报错,而使用包装类接收时,包装类的默认值为null,代码不会报错。
2.2.3 获取对象
Spring MVC可以自动实现参数对象的赋值。
代码示例:

使用postman发送请求:

注意:
(1) 请求中的参数名称和要获取的对象中的属性名称相同;
(2) 被获取的对象对应的属性要实现get和set方法(本文中添加了@Data注解)。

2.2.4 后端参数重命名
如果前端传递的参数名为time,而后端接收时的参数名为TIME,前后端参数名不一致时,就会出现参数接收不到的情况,此时就可以使用@RequestParam来重命名后端的参数名。
代码示例:

使用postman发送请求:

2.2.5 设置参数必传
上面的例子中,如果我们在发送请求时不传参数的话,后端getTime方法中的参数TIME应该是默认值null,但实际上我们的代码会报错:

这是因为,在添加@RequestParam注解后,这个参数就变成了必传的参数,我们可以通过更改该注解中required的值来让它变成非必传参数:

再次发送请求时,代码就不会报错了:

2.2.6 获取JSON格式对象
如果请求中的数据格式为JSON格式,那么可以使用@RequestBody注解来获取数据。
代码示例:

使用postman发送JSON数据格式的请求:

2.2.7 获取URL中的参数
某些情况下,程序可能要从URL部分获取参数,而不是从query string、请求的body部分获取参数,此时就需要用到@PathVariable注解。
代码示例:

使用postman发送请求:

注意:使用@PathVariable注解修饰参数后,对应的路由也需要发生变化,对应部分的路由名称要和参数名称一致。
2.2.8 获取上传文件
获取上传文件需要用到@RequestPart注解。
代码示例:

使用postman发送请求:

查看配置文件中设置的本地保存图片的路径:

2.2.9 获取Cookie
方式一:使用Servlet中获取Cookie的方式
Spring MVC是基于Servlet的,所以Servlet中的API在Spring MVC中也是可以使用的~
代码示例:

方式二:使用@CookieValue注解
代码示例:

代码运行结果:

2.2.10 存储和获取Session

方式一:使用Servlet中获取Session的方式

方式二:使用@SessionAttribute注解

required属性的用法和@RequestParam中的required属性用法相同(设置参数必传)。

2.2.11 获取Header
方式一:使用Servlet中获取Header的方式


方式二:使用@RequestHeader注解


2.3 输出数据
2.3.1 返回静态页面
默认情况下,Spring MVC返回的就是一个静态页面
代码示例:


前端页面:

2.3.2 返回text/html
使用@ResponseBody或@RestController注解,返回的就是非静态页面
代码示例:

前端页面:

2.3.3 返回JSON对象
Spring MVC会根据返回的数据自动设置响应中的数据格式~
代码示例:

抓包查看响应中的数据格式:

2.3.4 请求转发和请求重定向
代码示例:

请求转发的前端页面:

请求重定向的前端页面:
相关文章:
Spring MVC常用功能及注解
目录 一、什么是Spring MVC 1.1 Spring MVC定义 1.2 MVC定义 1.3 MVC和Spring MVC的关系 1.4 Spring MVC的作用 二、Spring MVC的使用 2.1 Spring MVC的创建和连接 2.1.1 RequestMapping注解 2.1.2 GetMapping注解 2.1.3 PostMapping注解 2.2 获取参数 2.2.1 获取单…...
shell 编程
文章目录一、shell 编程1.1. 脚本执行1.2. 变量1.3. 特殊变量1.4. 运算符1.5. for 循环1.6. while 循环1.7. case 语句1.8. read 命令1.9. if 判断1.10. 判断语句1.11. 自定义函数1.12. 脚本调试二、sed2.1. sed 选项2.2. sed function2.3. sed 删除(d 命令…...
Leetcode.1401 圆和矩形是否有重叠
题目链接 Leetcode.1401 圆和矩形是否有重叠 Rating : 1709 题目描述 给你一个以 (radius, xCenter, yCenter)表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2),其中 (x1, y1)是矩形左下角的坐标,而 (x2, y2)是右上角的坐标。 如果圆和矩…...
CHAPTER 3 Web Server - httpd配置(二)
Web Server - httpd配置二3.1 httpd配置3.1.1 基于用户的访问控制3.1.2 basic认证配置示例:1. 添加用户2. 添加网页文件3. 定义安全域4. 修改父目录权限5. 访问效果6. 在配置文件中定义一个".htaccess"隐藏文件7. 添加组3.1.3 虚拟主机1. 构建方案2. 基于…...
VSCode 连接 SSH 服务器
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/129133964 配置VSCode 下载VSCode:https://code.visualstudio.com/ 安装 Remote - SSH: 点击右下角蓝色图标: 连接服务器: 即可。 默认连接:ssh chen…...
如何选择靠谱的插画培训课程
如何选择靠谱的插画培训课程,今天教你3个维度选择一个靠谱的插画培训班! 插画培训机构课程: 1.选择插画培训班时,要先考察课程,看看课程内容是否符合自己的需求,是否有助于提高插画技术。课程设置应该灵活…...
剑指 Offer 28. 对称的二叉树
剑指 Offer 28. 对称的二叉树 难度:easy\color{Green}{easy}easy 题目描述 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 但是下…...
深入Spring底层透析后置处理器之豁然开朗篇
目录前言Spring的后置处理器Bean工厂后置处理器Bean后置处理器自定义Component实现注解开发前言 看这篇文章之前,需要了解Bean创建的过程,本篇文章是接着bean创建的基本流程的续写 Bean创建的基本过程:http://t.csdn.cn/1lK2d Spring的后置处…...
软件测试(基础定义篇)
测试基础 1、什么是软件测试?2、常见的测试分类3、质量模型 4、软件测试流程 5、测试用例 6、测试用例设计方法 )1、什么是软件测试? 1、什么是软件? 答:软件是控制计算机硬件工作的工具。 2、软件的组成? 3、什么是…...
华为OD机试 - 寻找目标字符串 | 机试题算法思路 【2023】
最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …...
使用echart绘制中国地图并显示人数
文章目录引言效果如图所示vue中echarts4.9版本,地图的使用引言 在做毕设的过程中,有一个需求:根据用户的ip,在前端展示出中国地图,然后展现出每个省有多少人这样子 经过百度后,发现可以使用echart来完成该…...
Git的常用命令
1:软件安装1.1:Git下载与安装百度上搜索Git官网:https://git-scm.com/下载:https://git-scm.com/download/win下载Git安装程序,双击安装 Git-2.9.3.2-64-bit.exe配置环境变量path 使用git --version查看 git 是否安装成…...
AcWing1018.最低通行费
1018.最低通行费一个商人穿过一个 NN 的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间 1 个小方格,都要花费 1 个单位时间。商人必须在 (2N−1)(2−1) 个单位时间穿越出去。而在经过中间的每个小方…...
【面试题】vue中的插槽是什么?
大厂面试题分享 面试题库后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库一、slot是什么在HTML中 slot 元素 ,作为 Web Components 技术套件的一部分,是Web组件内的一个占位符该占位符可以在后期…...
Go语言结构体struct详解,Go空结构体的这些妙用你知道吗?
本文详解了Go语言结构体的各个知识点,最后介绍了空结构体的3种妙用。希望对你有帮助。 定义 结构体,是一种自定义的数据类型,由多个数据类型组合而成。用于描述一类事物相关属性。 定义方式: type 类型名 struct {字段名 字段类…...
华为OD机试 - 航天器(Python) | 机试题+算法思路+考点+代码解析 【2023】
航天器 题目 给航天器一侧加装长方形和正方形的太阳能板(图中的斜线区域); 需要先安装两个支柱(图中的黑色竖条); 再在支柱的中间部分固定太阳能板; 但航天器不同位置的支柱长度不同; 太阳能板的安装面积受限于最短一侧的那支支柱的长度; 现提供一组整型数组的支柱高度数据;…...
【Optional】告别丑陋判空,使用Optional类
一、概述 当项目中充斥着大量的、丑陋的判空语句,如下: if (user ! null) {Address address user.getAddress();if (address ! null) {Country country address.getCountry();if (country ! null) {String isocode country.getIsocode();if (isocod…...
魔兽世界服务端端新手搭建教程
明杰也是很久以前开始研究魔兽服务器架设,主要原因是亚服经常要排队6-7个小时,去不排除的服和单机没啥区别,以怀旧服玩到10级以后就开始玩335端,一开始也和新入手的人一样云里雾里的,经过长时间的学习总算有点成就,向新…...
宝塔搭建实战人才求职管理系统mobile手机端vue源码(五)
大家好啊,我是测评君,欢迎来到web测评。 上一期给大家分享骑士cms会员管理member前端vue在本地运行打包、宝塔发布部署的方式,本期给大家分享,mobile移动端vue怎么在本地运行,打包,实现线上功能更新替换的方…...
生态应用:探讨 NGINX 与上下游系统集成时的开发经验
NGINX 作为一款高性能的 Web 服务器和反向代理服务器,在各种应用场景中广泛应用。随着业务的发展,我们在使用 NGINX 时,可能需要将其与其他系统进行集成,以实现更加复杂的业务需求。 本文将结合实际应用场景,探讨 NGI…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
