【SpringMVC】常用注解(续)

news2024/12/26 21:55:43

在SpringMVC常用注解一文中,已经对一些基本注解(有@Controller、@RequestMapping、@ResponseBody、@RequestParam)进行了简单介绍;在此篇文章中,将继续对剩余的几个常用注解进行简单介绍,有@RequestBody、@PathVariable以及@RequestPart。

@RequestBody

@RequestBody注解接收的参数是来自于HTTP请求中的body中,通常用来接收的是json或者xml类型的数据,和@ResponseBody类似(@ResponseBody是用来传递josn或xml等类型的数据)。

使用位置:如下图,对应方法参数前。

常见属性

在@RequyestBody中,只有一个属性就是required,当某个参数加上注解之后,默认就是此参数必须存在。 

@RequestBody和@RequestParam的区别:
1. @RequestBody是请求体中的内容,意味着GET请求是不能使用此注解的,只有POST或者其他包含请求体的请求类型才可以使用;而@RequetParam是接收key value的参数,例如username=张三&password=123,GET和POST请求都可以使用,一般是查询字符串、form-data或者x-www-form-urlencoded等类型的参数。

2. @RequestBody在一个方法中,只能出现一次;而@RequestParam在一个方法中可以出现多次。

 @PathVariable

@PathVariable翻译过来的意思是路径变量,是用来映射URL绑定的占位符。

当路径中存在{xxx}时,使用@PathVariable注解就可以将xxx映射为key,前端传过来的值就是value;例如下图:
 

URL:127.0.0.1:8080/user/赵四/123
当路径中是上述语句时,表示用户名为赵四,密码是123。  

在使用@PathVariable注解时,为了更好的表示URL的语义,也可以将路由写成如下: 

 

 URL:127.0.0.1:8080/user/username/赵四/password/123
当路径中是上述语句时,表示用户名为赵四,密码是123。  

常见属性

 在@PathVariable注解的源代码中可以看出,此注解一共有三种属性

        1. name / value

         name和value是两种属性,但是表示的确是一种含义,name是value的别名,value是name的别名,看个人习惯更喜欢使用哪一种,表示的都是对{}中参数的映射。

        2. required

        required参数基本是好多SpringMVC中注解都有的一个参数,表示的都是此参数是否必须存在;但是在此注解中唯一不同的就是如果可以不存在还得有特殊的处理方法,否则会404。

@PathVariable是在请求路由中进行操作的一个注解,我平常的习惯是不太经常用此注解,相比之下我更喜欢使用@RequestParam或者@RequestBody。

@RequestPart 

@RequestPart注解是用来表示进行上传图片使用。

在@RequestPart注解中,同样也是存在name、value以及required属性。

如上图所示,就是一个简单上传图片的案例;但是在正式开发中,并不会这样进行使用,因为上述图片路径是确定的,那就表示所有的图片都使用的是同一路径,这就使得后续的图片会将前一张图片覆盖,永远都只会存储一张图片;因此,在正式开发中,都是加上uuid来表示。

@RequestPart注解是用来进行图片上传的一个注解,和其他注解并没有太多类似或者相同的地方,因此可以单独进行理解。

在本篇文章中,是对SpingMVC注解的后续介绍,两篇文章大概七个注解,基本上就是SpringMVC中常用的几个注解,在Spring的初始阶段,可以先对这几个注解熟悉之后,再去对其他的一些注解进行深入了解,感谢各位的观看。

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

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

相关文章

测试平台出问题?看我20分钟快速定位!

今天遇到一个问题,感觉挺有意思,处理过程也非常有意义,希望能给大家一个借鉴吧。今天一位小姐姐找到了我们大组长,说测试平台添加自动化测试用例失败,之后我们组长把我拉到了一个群里让我去看一下,硬着头皮…

uniapp 简易自定义日历

1、组件代码 gy-calendar-self.vue <template><view class"calendar"><view class"selsct-date">请选择预约日期</view><!-- 日历头部&#xff0c;显示星期 --><view class"weekdays"><view v-for"…

k8s存储卷-动态PV

pv和PVC&#xff0c;存储卷&#xff1a; 存储卷&#xff1a; EmptyDir&#xff1a;容器内部&#xff0c;随着pod销毁&#xff0c;emptyDir也会消失&#xff0c;不能做数据持久化 HostPath&#xff1a;持久化存储数据&#xff0c;可以和节点上目录做挂载&#xff0c;pod被销毁…

vue el-table 多选框回填

主要代码: //选中列&#xff0c;所有列&#xff0c;表名toggleSelection(selectRows, totalRows, tablename) {this.$refs.table.clearSelection();if (selectRows.length > 0) {this.$nextTick(() > {selectRows.forEach(item > {totalRows.forEach(item1 > {if (…

PyTorch常用操作

0. 先决条件 安装驱动、CUDA、cuDNN&#xff0c;请参考&#xff1a;https://blog.csdn.net/liugan528/article/details/128974129 import torch print(torch.__version__)#查看gpu是否可用 print(torch.cuda.is_available())#查看设备gpu个数 print(torch.cuda.device_count(…

数据结构学习 jz29 顺时针打印矩阵

关键词&#xff1a;模拟 题目&#xff1a;螺旋遍历二维数组 简单题做了超过40分钟 调了很久 不好 方法一&#xff1a; 我自己做的。 思路&#xff1a; xy_t&#xff1a; 记录xy的方向&#xff0c;往右走&#xff0c;往下走&#xff0c;往左走&#xff0c;往上走 t控制方…

Jupyter Notebook

2017年左右在大学里都听说过Jupyter Notebook&#xff0c;并且也安装用了一段时间&#xff0c;后来不知道什么原因没有用了。估计是那时候写代码的时候多一些&#xff0c;因为它可以直接写代码并运行结果&#xff0c;现在不怎么写代码了。 介绍 后缀名为.ipynb的json格式文件…

105、Zero-1-to-3: Zero-shot One Image to 3D Object

简介 官网  使用合成数据集来学习相对摄像机视点的控制&#xff0c;这允许在指定的摄像机变换下生成相同对象的新图像&#xff0c;用于从单个图像进行三维重建的任务。 实现流程 输入图像 x ∈ R H W 3 x \in \R^{H \times W \times 3} x∈RHW3&#xff0c;所需视点的相…

PyTorch——torchtext与PyTorch匹配的版本

一、匹配版本的对照表 二、按照对应版本的命令 例子&#xff1a; pip install torchtext0.9.1参考资料&#xff1a; Torchtext and PyTorch s Version Compatibility

云联惠 被查 消费积分合法化!——全新消费返利模式!共享购!

大家好 我是吴军 一家软件开发公司的产品经理 今天讲一讲&#xff0c;曾经盛极一时的云联惠&#xff0c;巅峰时期达到一千万的用户&#xff0c;资金6000亿。 前几年云联惠如火如荼&#xff0c;到处都是在宣传云联惠的&#xff0c;小编也略玩了一下下。 当时因为政策的不明朗…

SpringBoot:详解依赖注入和使用配置文件

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、&#x1f3…

【软件工程】《软件工程》期末复习提纲

《软件工程》期末复习提纲 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 第十章 第十一章 第十二章 第十三章 第十四章 小题参考 大题参考 《软件工程》期末复习提纲 第一章 1.在下列选项中&#xff0c;&#xff08; &#xff09;不是软…

10.9.2 std::function 代替函数指针 Page182~183

std::function是一个模板类&#xff0c;基本可作为函数指针的代替品&#xff0c;具备更多功能&#xff0c;特别是与函数对象及bind配合使用。使用std::function时&#xff0c;需要添加头文件 #include <functional> 1.定义函数指针 18行&#xff0c;定义了一个函数指针类…

Linux常用命令大全(三)

系统权限 用户组 1. 创建组groupadd 组名 2. 删除组groupdel 组名 3. 查找系统中的组cat /etc/group | grep -n “组名”说明&#xff1a;系统每个组信息都会被存放在/etc/group的文件中1. 创建用户useradd -g 组名 用户名 2. 设置密码passwd 用户名 3. 查找系统账户说明&am…

多模型图像特征可视化

特征图可视化是指将网络中某一层的特征图可视化出来&#xff0c;以便观察网络在不同层次上学到的特征。卷积可视化可以帮助深度学习研究者更好地理解卷积的概念和原理&#xff0c;从而更好地设计和优化卷积神经网络。通过可视化&#xff0c;研究者可以更清晰地看到卷积运算中的…

【现代密码学】笔记 补充7-- CCA安全与认证加密《introduction to modern cryphtography》

【现代密码学】笔记7-- CCA安全与认证加密《introduction to modern cryphtography》 写在最前面7 CCA安全与认证加密 写在最前面 主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。 内容补充&#xff1a;骆婷老师的PPT 《introduction to modern cryphtography》…

【GitHub项目推荐--一行命令下载全网视频】【转载】

项目地址&#xff1a;https://github.com/soimort/you-get 首先声明&#xff0c;请不要使用该项目从事违法活动哦~仅供学习使用&#xff01; 解决痛点 如果你上网的时候看了一些东西不错&#xff0c;想下载下来&#xff0c;或者在线观看喜欢的视频&#xff0c;但是没有找到网…

坚持刷题|翻转二叉树

坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;今天先刷个简单的&#xff1a;翻转二叉树 题目 226.翻转二叉树 考察点 翻转二叉树又称为镜像二叉树&#xff0c;使用Java实现翻转二叉树通常是为了考察对二叉树的基本操作和递归的理解能力 递归的理解&#xff1a; 能够理解…

【JaveWeb教程】(26) Mybatis基础操作(新增、修改、查询、删除) 详细代码示例讲解(最全面)

目录 1. Mybatis基础操作1.1 需求1.2 准备1.3 删除1.3.1 功能实现1.3.2 日志输入1.3.3 预编译SQL1.3.3.1 介绍1.3.3.2 SQL注入1.3.3.3 参数占位符 1.4 新增1.4.1 基本新增1.4.2 主键返回 1.5 更新1.6 查询1.6.1 根据ID查询1.6.2 数据封装1.6.3 条件查询1.6.4 参数名说明 1. Myb…

大语言模型面试问题【持续更新中】

自己在看面经中遇到的一些面试题&#xff0c;结合自己和理解进行了一下整理。 transformer中求和与归一化中“求和”是什么意思&#xff1f; 求和的意思就是残差层求和&#xff0c;原本的等式为y H(x)转化为y x H(x)&#xff0c;这样做的目的是防止网络层数的加深而造成的梯…