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 已经可以达到我们的⽬的了, 我们为什么还要加 @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

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

相关文章:
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 …...
【Vim Masterclass 笔记16】S07L32 + L33:同步练习09 —— 掌握 Vim 宏操作的六个典型案例(含点评课内容)
文章目录 S07L32 Exercise 09 - Macros1 训练目标2 操作指令2.1. 打开 macros-practice.txt 文件2.2. 练习1:将旧版 Python 代码转换为新版写法2.3. 练习2:根据列表内容批量创建 Shell 脚本2.4. 练习3:对电话号码作格式化处理2.5. 练习4&…...
爬楼梯问题(Leetcode 第70题)
爬楼梯问题(Leetcode 第70题) 问题描述 假设你正在爬楼梯。每次你可以爬 1 个或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。…...
6.5 正定矩阵
一、正定矩阵 这一节关注的是特征值都是正数的对称矩阵。如果对称使得矩阵很重要,那么这个额外的性质(所有的 λ > 0 \lambda>0 λ>0)会使得它更加的特殊。我们所说的特殊并不表示它稀有,特征值都是正数的对称矩阵几乎…...
verilog笔记1
1. 阻塞赋值 阻塞赋值,顾名思义即在一个 always 块中,后面的语句会受到前语句的影响,具体来说就是在同一个always 中,一条阻塞赋值语句如果没有执行结束,那么该语句后面的语句就不能被执行,即被“阻塞”。也…...
游戏引擎学习第81天
仓库:https://gitee.com/mrxiao_com/2d_game_2 或许我们应该尝试在地面上添加一些绘图 在这段时间的工作中,讨论了如何改进地面渲染的问题。虽然之前并没有专注于渲染部分,因为当时主要的工作重心不在这里,但在实现过程中,发现地…...
git系列之revert回滚
1. Git 使用cherry-pick“摘樱桃” step 1: 本地切到远程分支,对齐要对齐的base分支,举例子 localmap git pull git reset --hard localmap 对应的commit idstep 2: 执行cherry-pick命令 git cherry-pick abc123这样就会将远程…...
监控与调试:性能优化的利器 — ShardingSphere
在分布式数据库系统中,监控和调试是确保系统高效运行的关键。ShardingSphere 提供了多种监控和调试工具,帮助开发者实时跟踪和优化性能,识别瓶颈,进行故障排查,从而提升系统的稳定性和响应速度。本文将介绍如何使用 Sh…...
LLVM - 编译器前端 - 理解BNF(巴科斯-诺尔范式)
一:概述 BNF(Backus-Naur Form,巴科斯-诺尔范式)是一种用于描述上下文无关文法的形式语言,广泛应用于定义编程语言、协议和文件格式的语法规则。 下面是一小段类Pascal编程语言,这个编程语言就可以用BNF描述。用BNF描述编程语言的语法规则之后,就可以根据这个规则生成抽…...
服务化架构 IM 系统之应用 MQ
在微服务化系统中,存在三个最核心的组件,分别是 RPC、注册中心和MQ。 在前面的两篇文章(见《服务化架构 IM 系统之应用 RPC》和《服务化架构 IM 系统之应用注册中心》)中,我们站在应用的视角分析了普适性的 RPC 和 注…...
ELF2开发板(飞凌嵌入式)基本使用的搭建
ELF2开发板(飞凌嵌入式) 开箱包裹内容 打开包装,你可以看到以下物品 一个绿联的usb3.0读卡器、sandisk的32g内存卡(太好了)rk3588 4g32g emmc版本ELF2开发板输出为12v 3A的电源适配器(和ipad的充电器外观好像) 图1 外…...
Appium(四)
一、app页面元素定位 1、通过id定位元素: resrouce-id2、通过ClassName定位:classname3、通过AccessibilityId定位:content-desc4、通过AndroidUiAutomator定位5、通过xpath定位xpath、id、class、accessibility id、android uiautomatorUI AutomatorUI自…...
简单的sql注入 buuctf
lovesql 这道题是一个非常简单的sql注入 也就是万能密码 我们只需要注意在输入用户名的地方使用 ’ 将语句提前终止 并且or一个为真的条件 这样整个语句的结果就为真 这就是万能密码的原理 这样我们就得到了密码 然后我们发现这只是密码 于是查看一下字段数 尝试下注入 这里我…...
Ubuntu 24.04 LTS 空闲硬盘挂载到 文件管理器的 other locations
Ubuntu 24.04 LTS 确认硬盘是否被识别 使用 lsblk 查看信息,其中sda这个盘是我找不到的,途中是挂在好的。 分区和格式化硬盘 如果新硬盘没有分区,你需要先分区并格式化它。假设新硬盘为 /dev/sdb,使用 fdisk 或 parted 对硬盘…...
<电子幽灵>开发笔记:BAT基础笔记(一)
BAT脚本基础笔记(一) 介绍 费曼学习法最重要的部分,即把知识教给一个完全不懂的孩子——或者小白。 为了更好的自我学习,也为了让第一次接触某个知识范畴的同学快速入门,我会把我的学习笔记整理成电子幽灵系列。 提示:作为低代码…...
PiliPalaX ( 第三方安卓哔哩哔哩)
PiliPalaX 是一款哔哩哔哩第三方客户端。使用 Flutter 开发,基于PiliPala原版基础上创作出来的X升级版,目前支持Android、IOS客户端。 应用特色 目前着重移动端(Android、iOS)和Pad端,暂时没有适配桌面端、手表端等 https://pan.quark.cn/s/…...
在亚马逊云科技上高效蒸馏低成本、高精度的Llama 3.1 405B模型(上篇)
在2024年的亚马逊云科技re:Invent全球云计算春晚里,亚马逊云科技CEO - Matt Garman介绍了亚马逊云科技的AI模型托管平台Amazon Bedrock上的模型蒸馏服务Model Distillation,令小李哥印象十分深刻。该功能可自动化地为特定场景的知识创建一个蒸馏模型。它…...
Amazon MSK 开启 Public 访问 SASL 配置的方法
1. 开启 MSK Public 1.1 配置 MSK 参数 进入 MSK 控制台页面,点击左侧菜单 Cluster configuration。选择已有配置,或者创建新配置。在配置中添加参数 allow.everyone.if.no.acl.foundfalse修改集群配置,选择到新添加的配置。 1.2 开启 Pu…...
LeetCode_438.找到字符串中所有字母异位词
给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s "cbaebabacd", p "abc" 输出: [0,6] 解释: 起始索引等于 0 的子串是 "cba", 它是 "a…...
一文读懂服务器的HBA卡
什么是 HBA 卡 HBA 卡,全称主机总线适配器(Host Bus Adapter) ,是服务器与存储装置间的关键纽带,承担着输入 / 输出(I/O)处理及物理连接的重任。作为一种电路板或集成电路适配器,HBA…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

