Java@RequestParam注解和@RequestBody注解接收参数

目录

    • Java后端接收数据
  • 第一章、后端不写任何注解情况下接收参数
    • 1.1)后端不写注解postman发出get请求
    • 1.2)后端不写注解postman发出post请求
  • 第二章、后端写@RequestParam注解接收参数
    • 2.1)postman发出post请求
    • 2.2)postman发出get请求
  • 第三章、后端写@RequestBody注解接收参数
    • 3.1)postman发出post请求
    • 3.2)postman发出get请求
  • 第四章、总结
    • @RequestParam总结
    • @RequestBody总结

Java后端接收数据

注意:后端接收参数大概四种情况:
①不写任何注解
②写@RequestParam注解,多个@RequestParam注解
③写@RequestBody
④写@RequestParam注解同时又写@RequestBody

第一章、后端不写任何注解情况下接收参数

1.1)后端不写注解postman发出get请求

①后端参数类型为Integer,发送参数String “1”,结论接收成功

在这里插入图片描述

②后端参数类型为String,发送参数为String “1”,结论接收成功

在这里插入图片描述

③后端参数类型为一个Integer,一个String。发送参数方式为form-data 为key(pid) value(1),key(eid) value(“1”),结论接收成功
在这里插入图片描述

④后端参数类型为一个Integer,一个String,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论接受到的俩个值为NULL值
在这里插入图片描述
postman页面
在这里插入图片描述

⑤后端参数类型为一个数组,接收多个同名参数,结论接收成功
在这里插入图片描述
postman页面
在这里插入图片描述
⑥后端参数类型为map,接收多个不同名参数,结论失败
在这里插入图片描述
postmanye页面
在这里插入图片描述

⑦后端参数类型为一个实体类,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论对象参数的属性值为null
在这里插入图片描述
postman页面
在这里插入图片描述

1.2)后端不写注解postman发出post请求

①后端参数类型为Integer,发送参数为String “1”,结论接收成功

②后端参数类型为String,发送参数为String “1”,结论接收成功

③后端参数类型为一个Integer,一个String。发送参数方式为form-data 为key(pid) value(1),key(eid) value(“1”),结论接收成功

④后端参数类型为一个Integer,一个String,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败,两个值为NULL值

⑤后端参数类型为一个数组,接收多个同名参数,结论接收成功

⑥后端参数类型为map,接收多个不同名参数,结论失败

⑦后端参数类型为一个实体类,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败,对象参数的属性值为null

第二章、后端写@RequestParam注解接收参数

2.1)postman发出post请求

①后端参数类型为Integer,发送参数为String “1”,结论接收成功

②后端参数类型为String,发送参数为String “1”,结论接收成功

③后端参数类型为一个Integer,一个String。发送参数方式为form-data 为key(pid) value(1),key(eid) value(“1”),结论接收成功

④后端参数类型为一个Integer,一个String,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败bad request

⑤后端参数类型为一个数组,接收多个同名参数,结论接收成功
注意:不同名的不会存入

在这里插入图片描述
请求:
在这里插入图片描述
如果传递的三个参数有两个与数组参数同名会存入数组,不同名的则不会被存入数组
在这里插入图片描述
传参:两个与数组参数同名,一个不同名
在这里插入图片描述
⑥使用Map去接收请求参数,接收成功
在这里插入图片描述

postman请求:
在这里插入图片描述

⑦后端参数类型为一个实体类,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败,Bad Request
@RequestParam不能注解实体类参数
在这里插入图片描述
postman页面
在这里插入图片描述

2.2)postman发出get请求

①后端参数类型为Integer,发送参数为String “1”,结论接收成功

②后端参数类型为String,发送参数为String “1”,结论接收成功

③后端参数类型为一个Integer,一个String。发送参数方式为form-data 为key(pid) value(1),key(eid) value(“1”),结论接收成功

④后端参数类型为一个Integer,一个String,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败bad request

⑤后端参数类型为一个数组,接收多个同名参数,结论接收成功
不同名的不会存入

⑥后端参数类型为map,接收多个不同名参数,结论成功

⑦后端参数类型为一个实体类,发送参数方式为JSON{“eid”:“1”,“pid”:1} ,结论失败,Bad Request
@RequestParam不能注解实体类参数

第三章、后端写@RequestBody注解接收参数

@RequestBody(只能接收JSON字符串)

3.1)postman发出post请求

①后端参数是Integer,传参数是数字 1 ,结论成功。
json的value为" " :后端对应属性是String类型的,那么接受到的就是" ",如果后端属性的类型是Integer、Double等,那么接收到的就是null。
json的value为null:后端对应收到的就是null。
②后端参数是String,传参数是字符串 1,结论成功
③后端参数是Integer,传参数是json {“eid”:1},结论失败 bad request
④后端参数是一个简单对象,发送参数方式为JSON{“eid”:“1”,“pid”:1}
会根据json字符串中的key来匹配对应实体类的属性,如果匹配一致且key对应的值符合实体类对应属性的类型要求时,会调用实体类的setter方法将值赋给该属性。

在这里插入图片描述
postman页面
在这里插入图片描述
⑥@RequestBody与@RequestParam()同时使用:
Controller:
在这里插入图片描述
postman页面:
在这里插入图片描述

3.2)postman发出get请求

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。

第四章、总结

@RequestParam总结

①@RequestParam用来绑定查询参数(也就是在URL上的参数)和from data(也就是请求体,对应postman中的 from-data)。发起请求时在URL上和使用from data传参都可以使用 @RequestParam来接收。

②@RequestParam将接收到的字符串自动转化为对应的类型

③@RequestParam不支持直接传递实体类的方式,可接收Map和数组,可接收单个参数。

④@RequestParam注解的属性
1、如果参数前写了@RequestParam(xxx),那么前端发送的请求路径中必须有对应的xxx参数才行
2、value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。
3、name:作用同value相同
4、required:表示请求中一定要传入对应的参数,如果设置为false时,当请求中没有此参数,将会默认为null
5、defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。注意默认值可以使用SpEL表达式,如"#{systemProperties[‘java.vm.version’]}"

@RequestParam(value = "参数名",required = false,defaultValue = "12")

@RequestBody总结

①@RequestBody主要使用post请求,接收JSON类型数据

②一个请求中@RequestBody最多只能有一个,而@RequestParam()可以有多个。它们可以同时使用。

③@RequestParam指定接收的参数可以是普通元素、数组、集合、对象等等,@RequestBody接收的是请求体里面的数据

④如果参数是放在请求体中,以application/json的格式传入后台接口,那么后台要@RequestBody才能接收到;如果不是放在请求体中的话要用@RequestParam来接收,或者在形参前不贴@RequestParam注解也能接收。

⑤feign或者openfeign远程调用服务时,如果参数前什么也不写,那么会被默认是@RequestBody。

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

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

相关文章

MySQL 中的 INSERT 是怎么加锁的?

在之前的博客中,我写了一系列的文章,比较系统的学习了 MySQL 的事务、隔离级别、加锁流程以及死锁,我自认为对常见 SQL 语句的加锁原理已经掌握的足够了,但看到热心网友在评论中提出的一个问题,我还是彻底被问蒙了。他…

【Image】GAN的超详细解释(以及奇怪的问题)

GAN原理 工作流程 下面是生成对抗网络(GAN)的基本工作原理 在GAN的架构中,有两个关键的组件:生成器(Generator)和鉴别器(Discriminator)。 生成器(Generator&#xff0…

HTML5之 夜景放烟花

参考网址 https://blog.csdn.net/Gou_Hailong/article/details/122269931 https://blog.csdn.net/u013343616/article/details/122233674 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transi…

JavaScript(ES6)数据结构与算法之哈希表

5. 哈希表&#xff08;散列表/字典&#xff09; 文章目录 5. 哈希表&#xff08;散列表/字典&#xff09;5.1 概念5.2 哈希表的实现5.3 扩容 5.1 概念 基于数组实现&#xff0c;存放键值对&#xff1a;结构是数组&#xff0c;对输入的键进行变换&#xff08;哈希函数&#xff…

JavaScript 数组【详解】

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍JavaScript中数组详解 数组声明/基础操作以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题可…

C/C++ BM2链表内指定区间反转

文章目录 前言题目1. 解决方案一1.1 思路阐述1.2 源码 2. 解决方案二2.1 思路阐述2.2 源码 总结 前言 这题是BM1的升级版&#xff0c;不过是把完整的链表翻转变成了指定区间。 题目 描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转&#xff0c;要求时间复杂度 …

Sqlserver数据库触发器sql案例

前言 需求&#xff1a;当主数据状态更新为无效时&#xff0c;同时将关系表中的关联记录修改成无效状态。 为什么要From inserted去查询主键和状态&#xff1f; 在 SQL Server 中&#xff0c;触发器使用 inserted 和 deleted 临时表来引用发生 INSERT、UPDATE 或 DELETE 操作…

手机蓝牙在物联网超市中的应用

超市一站式购物已进入城市的千家万户。然而人们在选购时却采用直接翻阅商品的方式&#xff0c;既不方便又不卫生甚至大大缩短食品类商品保质期&#xff0c;也给超市商品管理造成很大难度。物联网(The Internet of things)基于射频识别(RFID)、红外感应等技术&#xff0c;把物品…

CentOS环境下Nacos2.3集成PostgreSQL

title: CentOS环境下Nacos2.3集成PostgreSQL date: 2023-12-21 19:15:00 categories: Nacos description: CentOS环境下Nacos2.3集成PostgreSQL 1. 目录 1. 目录2. 简介3. 安装部署 3.1. 部署模式3.2. 环境准备3.3. 下载安装文件3.4. PostgreSQL插件 3.4.1. 下载地址3.4.2. 结…

面试心得总结ing版

1.rpc框架&#xff1f;常见的rpc框架组件&#xff1f;rpc框架与http框架的区别&#xff1f; rpc框架是远程服务调用框架&#xff0c;简单来说&#xff0c;就是在同一个网络下&#xff0c;服务a可以调用服务b中的某个接口。底层利用tcp协议&#xff08;传输层&#xff09;建立网…

VScode远程连接服务器,Pycharm专业版下载及远程连接(深度学习远程篇)

Visual Code、PyCharm专业版&#xff0c;本地和远程交互。 远程连接需要用到SSH协议的技术&#xff0c;常用的代码编辑器vscode 和 pycharm都有此类功能。社区版的pycharm是免费的&#xff0c;但是社区版不支持ssh连接服务器&#xff0c;只有专业版才可以&#xff0c;需要破解…

HTML网站基础

一、前端开发基础 前端一共三门语言——HTML、CSS、JS&#xff08;Java Script&#xff09; HTML用于静态网页框架&#xff0c;CSS用于修饰&#xff0c;JS构成动态网页 1、HTML 对于中文网页需要使用 <meta charset"utf-8"> 声明编码&#xff0c;否则会出现…

【论文阅读】MCANet: Medical Image Segmentation with Multi-Scale Cross-Axis Attention

文章目录 摘要创新点总结实现效果总结 摘要 链接&#xff1a;https://arxiv.org/abs/2312.08866 医学图像分割是医学图像处理和计算机视觉领域的关键挑战之一。由于病变区域或器官的大小和形状各异&#xff0c;有效地捕捉多尺度信息和建立像素间的长距离依赖性至关重要。本文提…

面向 AI,重塑云基础设施、存储、芯片、Serverless……2023亚马逊云科技re:Invent中国行

一年一度亚马逊云科技重要的技术盛会 re:Invent 刚落下帷幕&#xff0c;2023 亚马逊云科技 re:Invent 中国行就将其中重要的信息与内容带给了中国市场和用户。作为全球的云计算巨头&#xff0c;今年亚马逊云科技可以说全面加码 AI&#xff0c;例如发布完整的端到端生成式 AI 技…

人工智能_机器学习073_SVM支持向量机_人脸识别模型建模_预测可视化_网格搜索交叉验证最优化参数对比---人工智能工作笔记0113

接着上一节来说,可以看到我们已经找到了合适的参数,然后 我们可以看一下这里 gc.best_params_ 就可以打印出最合适的参数 然后我们把最合适串按说填入到代码中,然后进行计算,看看得分 可以看到得分,训练数据是1.0 然后测试数据得分是0.7857...对吧

2024深入评测CleanMyMac X4.14.6破解版新的功能

随着时间的推移&#xff0c;我们的Mac电脑往往会变得越来越慢&#xff0c;存储空间变得越来越紧张&#xff0c;这时候一个优秀的清理工具就显得尤为重要。作为一款备受好评的Mac清理工具&#xff0c;它能够为你的Mac带来全方位的清理和优化。在本文中&#xff0c;我们将深入评测…

【HarmonyOS开发】OpenHarmony如何实现⼀次开发,多端部署

OpenHarmony提供用户程序框架、Ability框架以及UI框架&#xff0c;能够保证开发的应用在多终端运行时保证一致性。一次开发、多端部署。 多终端软件平台API具备一致性&#xff0c;确保用户程序的运行兼容性。 HarmonyOS提供了用户程序框架、Ability框架以及UI框架&#xff0c;…

WebRTC概念

定义 一个实时通信标准 通话原理 媒体协商 在WebRTC中&#xff0c;参与视频通讯的双方必须先交换SDP信息&#xff0c;获得一个都支持的编码格式 网络协商 目的&#xff1a;找到一条相互通讯的链路 做法&#xff1a;获取外网IP地址映射&#xff0c;通过信令服务器交换“网…

华锐三维云展平台 | VR在线展览云平台提供定制化虚拟展厅制作工具

随着科技的飞速发展&#xff0c;互联网技术的不断革新&#xff0c;广州华锐互动顺应时代需求&#xff0c;开发了VR在线展览云平台&#xff0c;用户可以在平台上自主创建属于自己的3D展厅。VR在线展览云平台正改变着传统展览行业的模式&#xff0c;为参展者提供更高效、更便捷、…

vue3整合Element-Plus,极速上手。

条件分页查询&#xff1a; 需求分析&#xff1a; form表单 Button按钮 Table表格 Pagination分页 页面布局&#xff1a; 搜索表单&#xff1a; 如果表单封装的数据较多&#xff0c;建议绑定到一个对象中。 …