0


SpringBoot接收参数的几种形式

SpringBoot接收参数的几种形式

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

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

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

1. 接收常规参数

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

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

获取到的id和name参数:

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

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

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

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

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

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

// 接收POST方式提交过来的数据@RequestMapping("/param/demo2")publicvoiddemo2(@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方法

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

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

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

在这里插入图片描述

@DatapublicclassAddress{privateString sheng;privateString shi;privateString xian;}
@DatapublicclassTeacher{privateString name;privateint age;privateAddress address;}
//接收嵌套的参数@RequestMapping("/param/demo4")publicvoiddemo4(Teacher teacher){System.out.println("接收到的数据是:");System.out.println(teacher);// 要获取所在的市String shi = teacher.getAddress().getShi();System.out.println("所在市:"+ shi);}

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

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

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

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

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

@RequestMapping("/param/demo7")publicvoiddemo7(@RequestParamList<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的数据对应上:

@DatapublicclassPeople{privateString name;privateint age;privateString[] likes;}
@RequestMapping("/param/demo8")publicvoiddemo8(@RequestBodyPeople people){System.out.println(people);}
  1. 接收JSON数组

假如有以下JSON数组:

在这里插入图片描述

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

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

假如有以下JSON数组:

在这里插入图片描述

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

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

@DatapublicclassPeople{privateString name;privateint age;}
@RequestMapping("/param/demo9")publicvoiddemo8(@RequestBodyList<People> peopleList){System.out.println(peopleList);}

5. 接收日期类型的参数

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

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

@RequestMapping("/param/demo10")publicvoiddemo10(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")publicvoiddemo10(@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")publicvoiddemo10(@DateTimeFormat(pattern ="yyyy/MM/dd")Date startDate,@DateTimeFormat(pattern ="yyyy-MM-dd")Date endDate){System.out.println(startDate.getMonth());System.out.println(endDate);}
标签: java spring boot

本文转载自: https://blog.csdn.net/long1_1/article/details/136381048
版权归原作者 _Aaron___ 所有, 如有侵权,请联系我们删除。

“SpringBoot接收参数的几种形式”的评论:

还没有评论