详解SpringBoot接收参数的五种形式

 更新时间:2024年03月01日 09:50:11   作者:_Aaron___  
在Spring Boot中,接收参数可以通过多种方式实现,本文给大家介绍了SpringBoot接收参数的五种形式,并通过代码和图文给大家介绍的非常详细,需要的朋友可以参考下

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数据的常用结构

JSON对象

{ 
 "name": "刘旭超", 
 "age": 36,  
 "likes": ["打游戏", "看电影"] 
 }

JSON数组

 [100, 200, 300]
 ["aaa", "bbb", "ccc"]

JSON对象数组

[ 
 { 
 	"name": "刘旭超",  
 	"age": 36 
 },  
 { 
 	"name": "刘二超",  
 	"age": 36 
 },  
 { 
 	"name": "刘小超",  
 	"age": 36 
 } 
]

SpringBoot端接收JSON类型的数据

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

接收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);
 }

接收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);
}

接收对象数组

假如有以下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);
}

以上就是SpringBoot接收参数的五种形式的详细内容,更多关于SpringBoot接收参数的资料请关注脚本之家其它相关文章!

相关文章

  • Java线程池ThreadPoolExecutor源码深入分析

    Java线程池ThreadPoolExecutor源码深入分析

    ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务
    2022-08-08
  • Java内存结构和数据类型

    Java内存结构和数据类型

    本文重点给大家介绍java内存结构和数据类型知识,非常不错,具有参考借鉴价值,需要的朋友参考下
    2016-12-12
  • Spring中@Autowire注入的深入讲解

    Spring中@Autowire注入的深入讲解

    这篇文章主要给大家介绍了关于Spring中@Autowire注入的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java基础之初识Maven

    Java基础之初识Maven

    这篇文章主要介绍了Java基础之初识Maven,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • 两种Eclipse部署动态web项目方法

    两种Eclipse部署动态web项目方法

    这篇文章主要介绍了两种Eclipse部署动态web项目方法,需要的朋友可以参考下
    2015-11-11
  • 浅谈Java中ArrayList的扩容机制

    浅谈Java中ArrayList的扩容机制

    本文主要介绍了浅谈Java中ArrayList的扩容机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • java list随机抽取元素的案例

    java list随机抽取元素的案例

    这篇文章主要介绍了java list随机抽取元素的案例,具有很好的参考,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java如何加载外部Jar的类并通过反射调用类的方法

    Java如何加载外部Jar的类并通过反射调用类的方法

    这篇文章主要介绍了Java如何加载外部Jar的类并通过反射调用类的方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Java利用MapStruct优雅解决Bean映射难题的完全指南

    Java利用MapStruct优雅解决Bean映射难题的完全指南

    在Java开发中,Bean映射是高频场景,本文从基础用法到进阶扩展,全面拆解MapStruct的使用流程,助力开发者高效实现Bean映射,感兴趣的小伙伴可以了解下
    2026-01-01
  • IDEA中切换不同版本的JDK的详细教程(超管用)

    IDEA中切换不同版本的JDK的详细教程(超管用)

    这篇文章主要介绍了IDEA中切换不同版本的JDK的详细教程(超管用),本文通过步骤详解给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09

最新评论