SpringMVC (2)

news/2025/1/19 7:22:45/

目录

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的格式如下:

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

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

传入多个参数:

java">    @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.ppmy.cn/news/1564345.html

相关文章

[深度学习]神经网络线性回归简易实例

线性回归简易实例 文章目录 线性回归简易实例导入模块所模拟的模型生成数据获取数据定义模型定义LOSS使用模型拟合出真实参数实现梯度下降函数,用于更新参数训练函数 完整代码 导入模块 import torch import matplotlib.pyplot as plt #画图import random #随机tor…

RabbitMQ 进阶

文章目录 一、发送者的可靠性 1.1 生产者重试机制:1.2 生产者确认机制: 1.2.1 开启生产者确认:1.2.2 定义 ReturnCallback:1.2.3 定义 ConfirmCallback: 二、MQ 的可靠性 2.1 数据持久化: 2.1.1 交换机持…

ASP.NET Core 中的 JWT 鉴权实现

在当今的软件开发中,安全性和用户认证是至关重要的方面。JSON Web Token(JWT)作为一种流行的身份验证机制,因其简洁性和无状态特性而被广泛应用于各种应用中,尤其是在 ASP.NET Core 项目里。本文将详细介绍如何在 ASP.…

Python爬虫---中国大学MOOC爬取数据(文中有数据集)

1、内容简介 本文为大二在校学生所做,内容为爬取中国大学Mooc网站的课程分类数据、课程数据、评论数据。数据集大佬们需要拿走。主要是希望大佬们能指正代码问题。 2、数据集 课程评论数据集,343525条(包括评论id、评论时间、发送评论用户…

Android 导出CSV文件乱码问题处理

最近有一个需求,需要在Android端导出CSV文件,自测是用的WPS,没啥问题。可到了测试那边,用Excel直接打开就是乱码,需要在Excel数据里面用【从文件/CSV】打开。这样就显示非常的不方便。 解决办法: public …

python中元类相关的问答题

元类(metaclass)是 Python 面试中的高级主题,主要考察候选人对类和对象底层机制的理解。以下是常见的 Python 元类面试题及详细解答: 1. 什么是元类? 回答: 元类是用于创建类的类。普通类的实例是对象&am…

AI大模型架构背后的数学原理和数学公式,基于Transformer架构的数学公式有哪些?

大家好,我是微学AI,今天给大家介绍一下大模型架构大部分是基于Transformer架构的研发出来的,背后的数学原理涉及线性代数、概率论、优化理论等。以下是关键数学原理和公式的详细说明及示例。 大模型背后隐藏的数学原理 1. 线性变换&#x…

聚焦算力、AI、安全、5G等十大领域,赛迪顾问发布2025年IT趋势

1月14日,赛迪顾问在北京举办“2025年IT趋势”发布会。发布会以“破浪乘风,迎势向上!”为主题,聚焦电子信息、算力、数字经济、人工智能、网络安全、工业软件、5G通信等十大IT重点领域,围绕IT产业新技术、新模式、新业态…