SpringBoot接收参数的几种形式

news2024/10/6 12:29:19

SpringBoot接收参数的几种形式

在SpringBoot中获取参数基本方式有5种,需要都掌握.

这里需要记住一个技术术语或概念

API接口: 你写好的那个URL地址,就被称为API接口

1. 接收常规参数

给/param/demo1这个URL接口发送id, name两个参数
在这里插入图片描述
以上是以GET请求类型进行发送,实际发送的请求如下:
在这里插入图片描述

在SpringBoot端,我们可以直接在处理请求的那个方法形参上,写上和请求参数同名的形参名称即可

获取到的id和name参数:

 @RequestMapping("/param/demo1")
 public void demo1(int id, String name){
 	System.out.println("获取到的参数是:");
 	System.out.println("id:" + id);
 	System.out.println("name:" + name);
 }
 

如果发送的是POST类型的请求,需要注意:POST请求的参数是放在请求体中提交给服务器端的.
在这里插入图片描述

我们接收的时候,也可以使用普通方法直接接收:

// 接收POST方式提交过来的数据
 @RequestMapping("/param/demo2")
 public void demo2(String gender, String name){
 	System.out.println("获取到的数据是:");
 	System.out.println("name = " + name);
 	System.out.println("gender = " + gender);
 }
 

注意点,接收参数的时候,不一定非要和提交过来的参数顺序一致,只需要名称对应上即可.

如果提交的参数名称和接收的名称不一致,可以使用@RequestParam注解进行参数映射
在这里插入图片描述

 // 接收POST方式提交过来的数据
 @RequestMapping("/param/demo2")
 public void demo2(@RequestParam("xingbie") String gender, String name){
 	System.out.println("获取到的数据是:");
 	System.out.println("name = " + name);
 	System.out.println("gender = " + gender);
 }
 

2. 使用POJO接收参数

如果需要同时接收一批数据,而不想通过普通方式一个个接收,就可以使用POJO对象的方式来获取提交过来的所有数据

只需要POJO对象的属性名和提交过来的参数一一对应上就可以了

比如如果想接收name, age, school, gender这些参数

在这里插入图片描述
写一个POJO,属性和提交过来的参数可以对应的上, 注意,一定要有getter/setter方法

 @Data
 public class People {
 	private String name;
 	private int age;
 	private String school;
 	private String gender;
 }

//如果同时提交过来一批数据(比如说10来个数据,我们要在形参中写上一堆参数吗?)
//如果同时提交过来的参数过多,我们可以考虑使用POJO方式接收
// Plain Old Java Object 
 @RequestMapping("/param/demo3") 
 public void demo3(People people){ 
    System.out.println("接收到的数据是:"); 
    System.out.println(people); 
 }
 

如果前端提交过来的数据是一个嵌套的数据,如何接收?

此时就需要使用嵌套的POJO来接收:

在这里插入图片描述

@Data 
 public class Address { 
    private String sheng; 
    private String shi; 
    private String xian; 
 }
@Data
 public class Teacher { 
    private String name; 
    private int age; 
 	private Address address;
 }
//接收嵌套的参数
 @RequestMapping("/param/demo4")
 public void demo4(Teacher teacher){
 	 System.out.println("接收到的数据是:");
	 System.out.println(teacher);
 // 要获取所在的市
	 String shi = teacher.getAddress().getShi();
	 System.out.println("所在市:" + shi);
 }

3. 接收数组或列表类型的数据

使用数组接收数据
在这里插入图片描述

 // 接收数组数据
@RequestMapping("/param/demo5")
public void demo5(String[] likes){
 	System.out.println("接收到的数据是:");
 	System.out.println(Arrays.toString(likes));
 }

使用集合接收数据,此时需要使用@RequestParam注解

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@RequestMapping("/param/demo7")
public void demo7(@RequestParam List<String> likes){
 	System.out.println("接收到的数据是:");
    System.out.println(likes);
 }

4. 接收JSON类型的数据

JSON是什么

JSON是一种轻量级的数据交换格式,易于人阅读和编写,可以在多种语言之间进行数据交换

JSON数据的常用结构
  1. JSON对象
{ 
 "name": "刘旭超", 
 "age": 36,  
 "likes": ["打游戏", "看电影"] 
 }
  1. JSON数组

 [100, 200, 300]
 ["aaa", "bbb", "ccc"]
  1. JSON对象数组
[ 
 { 
 	"name": "刘旭超",  
 	"age": 36 
 },  
 { 
 	"name": "刘二超",  
 	"age": 36 
 },  
 { 
 	"name": "刘小超",  
 	"age": 36 
 } 
]
SpringBoot端接收JSON类型的数据

注意: 要接收JSON类型的数据,在SpringBoot的方法参数中一定要使用@RequestBody注解才可以

  1. 接收JSON对象

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SpringBoot端需要先定义一个POJO:

比如定义一个People类,People类的属性一一的和JSON的数据对应上:


 @Data
 public class People {
 	private String name;
 	private int age;
 	private String[] likes;
 }
@RequestMapping("/param/demo8")
 public void demo8(@RequestBody People people) {
 	System.out.println(people);
 }
  1. 接收JSON数组

假如有以下JSON数组:

在这里插入图片描述

SpringBoot端使用@RequestBody注解,参数类型使用的数组或列表集合直接接收即可:

// 使用数组接收
@RequestMapping("/param/demo9")
public void demo8(@RequestBody Integer[] numbers) {
	System.out.println(Arrays.toString(numbers));
}
// 使用列表集合接收
@RequestMapping("/param/demo9")
public void demo8(@RequestBody List<Integer> numbers) {
	System.out.println(numbers);
}
  1. 接收对象数组

假如有以下JSON数组:

在这里插入图片描述

JSON对象,即使使用{}包裹的,我们需要使用JAVA对象来做对应, 使用[]包裹的,我们需要使用数组或列表集合来对应

定义一个对象来接收JSON{}里的数据

@Data
public class People {
	private String name;
	private int age;
}
@RequestMapping("/param/demo9")
public void demo8(@RequestBody List<People> peopleList) {
	System.out.println(peopleList);
}

5. 接收日期类型的参数

日期格式的数据,提交给SpringBoot的时候,我们是直接可以使用普通方式接受没有任何问题.

但是如果如上所示,我们使用字符串接收:

@RequestMapping("/param/demo10")
public void demo10(String startDate,String endDate){
// 此时接收到参数以后,startDate和endDate就是一个单纯的字符串,假如我们想使用年、月、日的
//据的时候
// 我们得使用字符串的一些方法来分割或截取才能获取到对应的年、月、日数据
	String[] dateArray =
    startDate.split("/");
	String year = dateArray[0];
	int yearInt = Interger.parseInt(year);
// 以上操作是不方便的
}

为了方便操作,SpringBoot是可以直接把前端提交过来的日期格式的数据,对应到JAVA的日期类型上,需要使用@DateTimeFormat注解+ Date类型对象来接收:

@RequestMapping("/param/demo10")
public void demo10(@DateTimeFormat(pattern = "yyyy/MM/dd") Date startDate,
@DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate){
	System.out.println(startDate.getMonth());
	System.out.println(endDate);
}

的数据,对应到JAVA的日期类型上,需要使用@DateTimeFormat注解+ Date类型对象来接收:

@RequestMapping("/param/demo10")
public void demo10(@DateTimeFormat(pattern = "yyyy/MM/dd") Date startDate,
@DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate){
	System.out.println(startDate.getMonth());
	System.out.println(endDate);
}

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

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

相关文章

一封来自 DatenLord 关于GSoC 2024的挑战书

Google Summer of Code 是一项全球性的在线计划&#xff0c;致力于将新的contributor引入开源软件开发领域。GSoC 参与者在导师的指导下&#xff0c;与开源组织合作开展为期 12 周以上的编程项目。今年&#xff0c;达坦科技入选作为开源社区组织&#xff0c;携CNCF Sandbox项目…

深入探讨Java中的OutputStreamWriter类

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

动态规划(算法竞赛、蓝桥杯)--分组背包DP

1、B站视频链接&#xff1a;E16 背包DP 分组背包_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N110; int v[N][N],w[N][N],s[N]; // v[i,j]:第i组第j个物品的体积 s[i]:第i组物品的个数 int f[N][N]; // f[i,j]:前i组物品&#xff0c;能放…

Power Apps 学习笔记 -- Plugin

文章目录 1. Plugin 简介2. Plugin 配置2.1 步骤Step核心分析 3. Plugin 代码 1. Plugin 简介 Plugin基础教程 : Plugin基础教程 插件Plugin: 1. 插件Plugin通常用于默认数据处理操作区间&#xff0c;增加数据默认行为的方法。(无重用性)2. Plugin 配置 .NET环境&#xff1a;.…

图像分割 - 轮廓拟合(最小外接矩形和圆形)

1、前言 拟合:用一条光滑的曲线将平面上的点连接起来 轮廓拟合:将凹凸不平的轮廓用平整的几何图形体现出来 本章将介绍如何用最小外接矩形或者最小外接圆形将下面的图像轮廓拟合 几何图形的轮廓绘制,参考前面的文章:图像分割 - 查找图像的轮廓(cv2.findContours函数) 2、…

rk3568-一种基于wifi的网络环境搭建方案

前言&#xff1a; PC--Ubuntu--开发板 三者之间的网络互相ping通很重要&#xff0c;尤其是ubuntu和开发板互ping成功最关键&#xff0c;关系到nfs&#xff0c;tftp等常用的开发手段。现在大多数开发板都带有wifi芯片&#xff0c;现在提供一种方案可以三个设备无线地搭建网络环境…

这4款一键生成的AI写作软件值得一试

自今年初以来&#xff0c;各类AI工具如潮水般涌现&#xff0c;包括AI写作、AI绘画、AI音频处理和AI抠图等等。这些工具层出不穷&#xff0c;为我们的工作和生活带来了极大的便利。学会充分利用这些AI工具可以显著提升我们的生产效率。 软件一&#xff1a;爱制作AI 推荐指数&am…

在实训云平台上配置云主机

文章目录 零、学习目标一、实训云升级二、实训云登录&#xff08;一&#xff09;登录实训云&#xff08;二&#xff09;切换界面语言&#xff08;三&#xff09;规划云主机实例 三、创建网络三、创建路由器2024-2-29更新到此四、添加接口五、创建端口六、添加安全组规则七、创建…

一文详解CRM系统是什么?让你轻松了解CRM的全貌!

互联网上关于CRM管理系统的介绍文章各式各样&#xff0c;但是很多都是为了做品牌推广&#xff0c;并不能真正帮助读者理解CRM这一系统。这篇文章有别于您读到的其他文章&#xff0c;将从CRM系统的概念理解、常见分类、基础功能、应用阶段、发展趋势、系统定价和选型技巧这七个方…

Tomcat 下部署若依单体应用可观测最佳实践

实现目标 采集指标信息采集链路信息采集日志信息采集 RUM 信息会话重放 即用户访问前端的一系列过程的会话录制信息&#xff0c;包括点击某个按钮、操作界面、停留时间等&#xff0c;有助于客户真是意图、操作复现 版本信息 Tomcat (9.0.81)Springboot(2.6.2)JDK (>8)DDT…

mount命令最新详细教程

背景 需要在设备上面&#xff0c;自动化运行u盘里面的脚本&#xff0c;并且进入一个产测模式。因此实际使用了这个mount命令&#xff0c;所以&#xff0c;写了这么一篇供大家参考。 一. 定义 mount命令在Linux和类Unix系统中用于挂载文件系统&#xff0c;即将存储设备…

Android NDK底层BUG,记录:connect、socket(AF_INET, SOCK_STREAM, 0) 等系统套接字接口函数崩溃问题。

在 Android NDK 之中&#xff0c;看上去调用 connect、socket 函数是不会崩溃的&#xff0c;但这是否定的&#xff0c;它在特定的情况下存在必定的崩溃的问题。 但是这种情况放到MACOS、LINUX、WINDOWS都不会崩溃&#xff0c;而它崩溃的点出现在操作系统底层。 人们需要参考这…

ssm656基于JAVA的校园失物招领平台的设计与实现

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一 、设计说明 1.1 课题…

计算机网络:数据链路层知识点汇总

文章目录 一、数据链路层功能概述二、封装成帧和透明传输三、差错控制&#xff08;检错编码&#xff09;四、差错控制&#xff08;纠错编码&#xff09;五、流量控制与可靠传输机制六、停止-等待协议七、后退N帧协议&#xff08;GBN&#xff09;八、选择重传协议&#xff08;SR…

一周学会Django5 Python Web开发-Django5列表视图ListView

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计27条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

【ZooKeeper 】安装和使用,以及java客户端

目录 1. 前言 2. ZooKeeper 安装和使用 2.1. 使用Docker 安装 zookeeper 2.2. 连接 ZooKeeper 服务 2.3. 常用命令演示 2.3.1. 查看常用命令(help 命令) 2.3.2. 创建节点(create 命令) 2.3.3. 更新节点数据内容(set 命令) 2.3.4. 获取节点的数据(get 命令) 2.3.5. 查看…

StarRocks实战——vivo基于 StarRocks 构建实时大数据平台

目录 前言 一、数据挑战 1.1 时效性挑战&#xff0c;业务分析决策需加速 1.2 访问量挑战&#xff0c;性能与稳定性亟待提高&#xff0c;支撑业务稳定运行 1.3 计算场景挑战&#xff0c;难以满足业务复杂查询需求 1.4. 运维挑战&#xff0c;用户查询体验需优化 二、OLA…

Huggingface初上手即ERNIE-gram句子相似性实战

大模型如火如荼的今天&#xff0c;不学点语言模型&#xff08;LM&#xff09;相关的技术实在是说不过去了。只不过由于过往项目用到LM较少&#xff0c;所以学习也主要停留在直面——动眼不动手的水平。Huggingface&#xff08;HF&#xff09;也是现在搞LM离不开的工具了。 出于…

Newtonsoft.Json

目录 引言 1、简单使用 1.1、官方案例 1.2、JsonConvert 2、特性 2.1、默认模式[JsonObject(MemberSerialization.OptIn/OptOut)] 2.2、序列化为集合JsonArrayAttribute/JsonDictionaryAttribute 2.3、序列化该元素JsonProperty 2.4、忽略元素JsonIgnoreAttribute 2.5、…

自动化构建平台(一)Linux下搭建私有代码仓库Gitblit的安装和使用详解

文章目录 前言一、Gitblit的安装和使用1、本地安装2、docker下安装3、Gitblit使用简介4、Gitblit仓库权限控制5、Gitblit邮件配置 总结 前言 代码版本管理&#xff0c;git模式应该是目前最流行的代码管理软件。目前支持git的管理软件有很多。 Gitblit是一个小型的代码仓库管理…