简单捋捋@RequestParam 和 @RequestBody的使用
作者:lankeren 发布时间:2022-11-02 16:19:20
前端向后端传递参数,后端怎么去接收,就会想到 spring 的注解
之前的话,我一直用的是 RequestParam("userName") String userName 这种形式,讲道理不怎么用 RequestParam String userName
无意间该去看看这两个是有什么不同了.
@RequestParam
@RequestBody (以 json 数据的形式接收)
如果不写 @RequestParam(xxx) 注解的话,那么就前端可以有 可以没有对应的xxx名字都行
如果有xxx名,那么就会自动匹配;
如果没有,请求也能正确发送。
一、 @RequestParam
/**
* 用户登录
* @param userName
* @param password
* @return
*/
@RequestMapping(value = "login", method = RequestMethod.POST)
public String login(@RequestParam String userName,
@RequestParam String password){
public BaseResponse login(@RequestParam("user") String userName,
@RequestParam("psd") String password){
如果前端不传 userName 或者 password 参数名的参数就会报错
1. 用 @RequestParam 前端传过来的参数名默认为 userName 我们String后面起的参数名
如果前端不传 user 或者 psd 参数名的参数就会报错
2. 用 @RequestParam("user") @RequestParam("psd"), 给前端传递过来的参数指定参数名
错误信息
3. "message":"Required String parameter 'userName' is not present"
其实还有其他的形式
看下面
@RequestParam(value="user" required=false) 这个注解
可以通过 required = false 或者 true 来要求 @RequestParam配置的前端参数是否一定要传
required = false 表示不传的话,会给参数赋值为 null ,required = true 就是必须要有
注意:
如果@requestParam注解的参数是int类型,并且required=false,此时如果不传参数的话,会报错。原因是,required=false时,不传参数的话,会给参数赋值null,这样就会把null赋值给了int,因此会报错。
使用 Integer 包装类型的话还要需要注意空指针异常
二、@RequestBody
@RequestBody 以 字符串 的形式接收前端传过来的请求体中的 json 数据
@RequestMapping(value = "login", method = RequestMethod.POST)
public String login(@RequestBody String jsonStr){
@RequestBody 以 简单对象 接收前端传过来的 json 数据
@RequestMapping(value = "login", method = RequestMethod.POST)
public String login(@RequestBody User user){
@RequestBody以 复杂对象 接收前端传过来的 json 数据
@RequestMapping(value = "login", method = RequestMethod.POST)
public String login(@RequestBody Team team){
参考: 笔者JustryDeng
来源:https://segmentfault.com/a/1190000021304159
猜你喜欢
- 本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据比如json数据如下:{responseHeader:{status:0
- 一、文件存储特点:openFileInput()和openFileOutput()读取设备上的文件。优点:适用于存储大量的数据,可以存储图片
- 本文实例为大家分享了java查找图中两点之间所有路径的具体代码,基于邻接表,供大家参考,具体内容如下图类:package graph1;im
- java与JSON数据的转换实例详解JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一
- 俗话说,工欲善其事,必先利其器。要做微信公众号开发,两样东西不可少,那就是要有一个用来测试的公众号,还有一个用来调式代码的开发环境。测试公众
- Maven setting中私有仓库配置浅析最近遇到过不少这样那样的问题,曾经做过maven的分享,但是发现当时部分内容还是太想当然了,下面
- 本文实例为大家分享了java实现猜数字游戏的具体代码,供大家参考,具体内容如下随机生成0~100的数字,通过控制台输入猜测数字,输出进行提示
- 解决Spring in action @valid验证不生效按照书上的示例代码来实现但是,添加了验证但是没有生效。Spring提供了校验Ap
- 在项目里,我需要做一个Spring Boot结合Thymeleaf前端模版,结合JPA实现分页的演示效果。做的时候发现有些问题,也查了现有网
- 我就废话不多说了,大家还是直接看代码吧~package com.zejian.annotationdemo; import java.lan
- 本文实例为大家分享了Java NIO实现多人聊天室的具体代码,供大家参考,具体内容如下1. 服务器端代码ChatServer类:packag
- java简单模拟微信抢红包功能,本例发100元红包,有10个人抢,为了尽可能的公平,每个人的红包金额都要随机(保证结果的不确定性,本例抢红包
- JAVA基础八股文Switch能支持哪些类型?jdk5之前,switch能够作用在byte,short,char,int(实际上都是提升为i
- ApplicationContext简述ApplicationContext代表IOC容器,在SpringIOC容器中读取Bean配置创建B
- 这篇文章主要介绍了如何通过SpringBoot实现商城秒杀系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 1、右值1.1 简介首先区分一下左右值:左值是指存储在内存中、有明确存储地址(可取地址)的数据;右值是指可以提供数据值的数据(不可取地址)如
- 本文实例讲述了java实现word文档转pdf并添加水印的方法。分享给大家供大家参考,具体如下:前段时间,项目需要自动生成word文档,用W
- 本文实例为大家分享了java通过PDF模板填写PDF表单的具体代码,包括图片,供大家参考,具体内容如下需要用到的java包: it
- 用法一:常量在JDK1.5之前,我们定义常量都是:publicstaticfianl....。现在好了,有了枚举,可以把相关的常量分组到一个
- 简介FTP 简介FTP 即 文件传输协议(英语:File Transfer Protocol 的缩写)是一个用于计算机网络上在客户端和服务器