SpringMVC (2)

目录

1. @RequestMapping 注解介绍

2. @RequestMapping 使用

3. @RequestMapping与请求方式

3.1 @RequestMapping 支持Get和Post类型的请求

3.2 @RequestMapping 指定接收某种请求

3.3 @GetMapping和@PostMapping

4. 传参

4.1 通过查询字符串传参

4.2 在 Body 中传参

4.2.1 x-www-form-unlencoded

​编辑4.2.2 form-data

4.2.3 raw



1. @RequestMapping 注解介绍

@RequestMapping 是 Spring Web MVC 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的
路由映射的.
表示服务收到请求时, 路径为 /user/m1 的请求就会调⽤ m1 这个⽅法的代码.
路由映射: 当用户访问⼀个 URL 时, 将⽤⼾的请求对应到程序中某个类的某个⽅法的过程就叫路由映射.
既然 @RequestMapping 已经可以达到我们的⽬的了, 我们为什么还要加 @RestController
呢?
Spring会对所有的类进⾏扫描, 如果类加了注解 @RestController , Spring才会去看这个类⾥⾯的⽅法有没有加 @RequestMapping 这个注解, 当然他的作⽤不⽌这⼀点, 后⾯再详细讲

2. @RequestMapping 使用

@RequestMapping 既可修饰,也可以修饰方法 ,当修饰类和⽅法时,访问的地址是类路径 + ⽅法路径.

如上图,类路径为 /user ,方法路径为 /m1 。

因此访问的地址为:http://127.0.0.1:8080/user/m1

【注意】

@RequestMapping 的URL 路径最前⾯加不加 / (斜杠)都可以, Spring程序启动时, 会进⾏判断, 如果前⾯没有加 / , Spring会拼接上⼀个 /

像上面这个例子就是路径不加斜杠

如果加上斜杠程序也能正常运行:


@RequestMapping 的URL路径也可以是多层路径, 最终访问时, 依然是 类路径 + 方法路径

访问的地址为:http://127.0.0.1:8080/user/m1/say/hi

3. @RequestMapping与请求方式

3.1 @RequestMapping 支持Get和Post类型的请求

@RequestMapping 支持 Get 请求还是支持 Post 请求?

我们使用浏览器访问 URL 时,发送的请求类型就是 Get 类型,使用fiddler抓包可以查看:

因此 @RequestMapping 肯定是支持 Get 类型的请求的,那么他支不支持 Post 请求呢?

此处需要使用 Postman 来构造 Post 请求:

使用 Postman 发送 Post 类型请求,可以正常返回 Hello world ,说明 @RequestMapping 也支持 Post 类型的请求。

3.2 @RequestMapping 指定接收某种请求

我们可以指定 @RequestMapping 来只接收一种请求:

以上代码指定了只有 Get 请求才能访问该路径

因此发送 Get 请求可以正常访问并响应:

如果发送 Post 请求则会出错:

用上述方法依此类推,可以单独支持8种类型的请求:

3.3 @GetMapping和@PostMapping

除了上述给 @RequestMapping 指定接收某种请求,还有两种注解可以指定接收 Get 和 Post 请求

@GetMapping 只支持 Get 请求,@PostMapping 只支持 Post 请求 :

使用Postman验证,m3只支持Get:

m3不支持Post:

m4只支持Post:

m4不支持Get:

4. 传参

4.1 通过查询字符串传参

URL的格式如下:

    @RequestMapping("/r2")public String r2(String keyword){return "接收参数:keyword:"+keyword;}

方法只能从()内的参数中获取到参数的值,而参数的值来自于请求时传入的参数:

传入多个参数:

    @RequestMapping("/r3")public String r3(String username,String password){return "username:"+username+"\npassword:"+password;}

请求也要传入对应的多个参数:

【注意】

传参时参数名要 一 一 对应,否则没有对应到的参数将自动赋值 null :

4.2 在 Body 中传参

使用查询字符串传参时,参数会显示在URL中:

如果不想让参数显示在URL中,我们也可以在 Body 传参。

4.2.1 x-www-form-unlencoded

此处使用的传参方式是 x-www-form-urlencoded :

在此处可以选择。

x-www-form-urlencoded 可以传入表单数据,

对应 Content-Type: application/x-www-from-urlencoded

传入 username 和 password :

此时参数就不会显示在URL上,而是在请求的 Body 里,使用 fiddler 抓包可以看到:

【注意】

① 在 Body 传参时,请求方法需要改为 Post ,否则服务端无法获取到参数:

② Integer 和 int 作为参数的区别

方法 r4 使用 Integer 接收参数,方法 r5 使用 int 接收参数:

相同点

① 都能正常传入数字

Integer:

int :

② 传入非数字值会出错:

Integer:原因:字符串“aaa”不能复制给Integer类型

int :原因:字符串“aaa”不能赋值给int类型

不同点

Integer 类型可以不传值,而 int 类型必须传值。

原因:当请求中没有给参数传值时,后端方法中的参数会自动给参数赋值null,Integer 是包装类型,可以赋值 null ,而 int 类型不能赋值 null。

Integer:

int :

4.2.2 form-data

表单提交的数据, 在 form 标签中加上 enctyped="multipart/form-data" , 通常⽤于提交图片/⽂件. 对应 Content-Type: multipart/form-data

此处可以选择传入表单,或者文件:

4.2.3 raw

可以上传任意格式的⽂本,可以上传text、json、xml、html


如果哪里有疑问的话欢迎来评论区指出和讨论,如果觉得文章有价值的话就请给我点个关注还有免费的收藏和赞吧,谢谢大家!

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

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

相关文章

RPA赋能内容创作:打造小红书入门词语图片的全自动化流程

🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 用RPA全自动化批量生产【入门词语】图片做小红书商单,保姆级工具开发教程 最近由…

css 实现自定义虚线

需求: ui 画的图是虚线,但是虚线很宽正常的border 参数无法做到 进程: 尝试使用 border:1px dashed 发现使用这个虽然是虚线但是很短密密麻麻的 这并不是我们想要的那就只能换方案 第一个最简单,让ui 画一个图然…

【机器学习实战入门】使用Python进行MNIST手写数字识别

什么是手写数字识别? 手写数字识别是计算机识别手写数字的能力。这对手工制造的设备来说是一个难题,因为手写数字并不完美,且人们书写数字的方式多种多样。手写数字识别旨在解决这一问题,通过使用数字的图像来识别该图像中的数字…

hive连接mysql报错:Unknown version specified for initialization: 3.1.0

分享下一些报错的可能原因吧 1.要开启hadoop 命令&#xff1a;start-all.sh 2.检查 hive-site.xml 和 hive-env.sh。 hive-site.xml中应设置自己mysql的用户名和密码 我的hive-site.xml如下&#xff1a; <configuration><property><name>javax.jdo.opt…

反转字符串中的单词 II:Swift 实现与详解

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

51c大模型~合集106

我自己的原文哦~ https://blog.51cto.com/whaosoft/13115290 #GPT-5、 Opus 3.5为何迟迟不发 新猜想&#xff1a;已诞生&#xff0c;被蒸馏成小模型来卖 「从现在开始&#xff0c;基础模型可能在后台运行&#xff0c;让其他模型能够完成它们自己无法完成的壮举——就像一个老…

机器学习(2):线性回归Python实现

1 概念回顾 1.1 模型假设 线性回归模型假设因变量y yy与自变量x xx之间的关系可以用以下线性方程表示&#xff1a; y β 0 β 1 ⋅ X 1 β 2 ⋅ X 2 … β n ⋅ X n ε y 是因变量 (待预测值)&#xff1b;X1, X2, ... Xn 是自变量&#xff08;特征&#xff09;β0, β1,…

AUTOSAR通信篇 - PDU和收发数据

点击订阅专栏不迷路 文章目录 一、概述二、OSI模型与AUTOSAR层级关系三、I-PDU、N-PDU、L-PDU及其关系3.1. L-PDU3.2. N-PDU3.3. I-PDU 四、数据流4.1. 普通数据流4.2. 诊断数据流4.3. 动态PDU数据流4.4. 安全通信数据流4.5. XCP数据流 返回总目录 一、概述 在学习Autosar通信…

《自动驾驶与机器人中的SLAM技术》ch4:预积分学

目录 1 预积分的定义 2 预积分的测量模型 ( 预积分的测量值可由 IMU 的测量值积分得到 ) 2.1 旋转部分 2.2 速度部分 2.3 平移部分 2.4 将预积分测量和误差式代回最初的定义式 3 预积分的噪声模型和协方差矩阵 3.1 旋转部分 3.2 速度部分 3.3 平移部分 3.4 噪声项合并 4 零偏的…

2025年01月蓝桥杯Scratch1月stema选拔赛真题—美丽的图形

美丽的图形 编程实现美丽的图形具体要求: 1)点击绿旗&#xff0c;角色在舞台中心&#xff0c;如图所示&#xff1b; 2)1秒后&#xff0c;绘制一个边长为 140的红色大正方形&#xff0c;线条粗细为 3&#xff0c;正方形的中心为舞台中心&#xff0c;如图所示; 完整题目可点击下…

58,【8】BUUCTF [PwnThyBytes 2019]Baby_SQL1

进入靶场 和2次注入的页面很像 不过养成查看源代码的好习惯 先访问source.zip 下载后解压&#xff0c;发现两个文件 第一个文件夹打开又有4个PHP文件 那还是先看index.php文件好了 有PHP和HTML两部分&#xff0c;下面是PHP部分代码&#xff08;HTML太长了&#xff0c;先放一…

Linux系统上安装最新版本的谷歌浏览器

要在您的 Linux 系统上安装最新版本的 Google Chrome 浏览器&#xff0c;您可以按照以下步骤进行操作&#xff1a; 方法一&#xff1a;通过 DEB 包安装&#xff08;适用于 Debian、Ubuntu 及其衍生版&#xff09; 下载 Google Chrome DEB 安装包&#xff1a; 打开您现有的浏览…

AI编程工具横向评测--Cloudstudio塑造完全态的jupyter notebook助力数据分析应用开发

AI编程工具横向评测–Cloudstudio塑造完全态的jupyter notebook助力数据分析应用开发 数据分析类应用的开发&#xff0c;指的是首先进行数据分析&#xff0c;比如统计学分析、机器学习模型的构建等&#xff0c;然后将分析的流程开发成数据分析类的工具&#xff0c;或者将数据分…

医疗集群系统中基于超融合数据库架构的应用与前景探析

一、引言 1.1 研究背景与意义 随着医疗信息化的飞速发展,医疗数据呈爆炸式增长。从日常诊疗记录、患者病历,到各类医疗影像、检查检验数据等,海量信息不断涌现。据统计,医疗数据的年增长率高达 30% 以上 ,2025 年,全球医疗数据量将达到 2314 艾字节(EB)。如此庞大的数…

vue项目引入阿里云svg资源图标

1&#xff1a;生成svg图标 登录阿里云官网 1.1 创建项目组 1.2 从阿里云网站上面获取喜欢的图标加入到已有的项目组 1.3 如果团队有自己的设计师&#xff0c;也可以让设计师上传自己的svg图标到阿里云指定的项目组&#xff1b; 使用的时候&#xff0c;把 资源包下载到本地项…

网络安全面试题汇总(个人经验)

1.谈一下SQL主从备份原理&#xff1f; 答&#xff1a;主将数据变更写入自己的二进制log,从主动去主那里去拉二进制log并写入自己的二进制log,从而自己数据库依据二进制log内容做相应变更。主写从读 2.linux系统中的计划任务crontab配置文件中的五个星星分别代表什么&#xff…

立创开发板入门第六课 音频-扬声器和麦克风 I2S驱动

音频芯片介绍 开发板上带有一个麦克风&#xff0c;一个扬声器&#xff0c;音频编解码芯片使用ES8311。麦克风直接连接到了ES8311芯片上&#xff0c;ES8311和扬声器之间&#xff0c;还有一个音频驱动放大器。ES8311通过I2S接口与ESP32-C3连接。 ES8311这个芯片不仅使用I2S接口…

pix2pix mmgeneration通用场景黑白图片上色模型训练,Docker

https://www.dong-blog.fun/post/1924 对于机器学习和深度学习感兴趣的读者来说,OpenMMLab 提供的 MMGeneration 库是一个绝佳的选择。最近我在阅读一篇关于 MMGeneration 的博客文章,尤其是在使用 Docker 环境进行模型和算法测试方面,受益匪浅。以下是我对目标博客内容的概…

数据仓库复用性:业务需求复用性设计

数据仓库的业务需求复用性设计是提升数据架构灵活性和扩展性的关键部分。以下是几个关键点&#xff0c;可以帮助实现业务需求复用性的设计&#xff1a; 1. 通用报表的复用 标准化数据模型&#xff1a;设计通用的数据模型&#xff0c;例如通用的事实表和维度表&#xff0c;使得…

Elasticsearch:Jira 连接器教程第二部分 - 6 个优化技巧

作者&#xff1a;来自 Elastic Gustavo Llermaly 将 Jira 连接到 Elasticsearch 后&#xff0c;我们现在将回顾最佳实践以升级此部署。 在本系列的第一部分中&#xff0c;我们配置了 Jira 连接器并将对象索引到 Elasticsearch 中。在第二部分中&#xff0c;我们将回顾一些最佳实…