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方法

 @Datapublic 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; }
@Datapublic 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的数据对应上:

@Datapublic 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.hqwc.cn/news/499008.html

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

相关文章

EasyX的使用(详解版)

EasyX的基础概念&#xff1a; 图形化——EasyX的安装-CSDN博客 创建图形化窗口 #include<graphics.h> #include<conio.h> int main() {//创建绘图窗口&#xff0c;大小为100x100像素。//更改为大窗口&#xff0c;像素增大&#xff1b;更改为小窗口&#xff0c;像素…

Jenkins笔记(一)

个人学习笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 目录 一&#xff1a;简单了解 二&#xff1a;什么是DevOps 三&#xff1a;安装Jenkins 四&#xff1…

HarmonyOS—端云一体化组件

概述 DevEco Studio还为您提供多种端云一体化组件。集成端云一体化组件后&#xff0c;您只需进行简单配置即可向应用用户提供登录、支付等众多功能。 登录组件 您可使用端云一体化登录组件向应用用户提供登录和登出功能&#xff0c;目前支持帐号密码登录、手机验证码登录、以…

喜报|迪捷软件入选工信部“2023年信息技术应用创新解决方案”

为进一步推进信创生态建设&#xff0c;激发产业自主创新活力&#xff0c;高效促进供需协同发展&#xff0c;加强区域联动和资源整合&#xff0c;国家工业和信息化部网络安全产业发展中心&#xff08;工业和信息化部信息中心&#xff09;联合相关单位&#xff0c;遴选了一批可复…

idea集成git详解教程(实用篇)

0.Git常用命令 Git常用命令-CSDN博客 1.下载git Git - Downloads 一路傻瓜式安装即可&#xff08;NEXT&#xff09; 2.软件测试 在Windows桌面空白处&#xff0c;点击鼠标右键&#xff0c;弹出右键菜单 Git软件安装后&#xff0c;会在右键菜单中增加两个菜单 Git GUI He…

django框架不调试下会被达出史(sql查询次数,消耗时间)

1:使用pycharm编辑器里面 2:安装django-debug-toolbar 3:进行调试查询 https django框架调试,各个面板查询消耗时间&#xff0c;pycharm,debug 1&#xff1a;settings.py INSTALLED_APPS列表中添加 INSTALLED_APPS [# 使用多合一有点慢# multi_captcha_admin,# 多合一验证码i…

Linux 基础之 vmstat 命令详解

文章目录 一、前言二、使用说明2.1 vmstat [delay/count/d/D/t/w]2.2.vm模式的字段 一、前言 vmstat(VirtualMeomoryStatistics&#xff0c;虚拟内存统计)是一个不错的 Linux/Unix 监控工具&#xff0c;在性能测试中除了top外也是比较常用的工具之一&#xff0c;它可以监控操作…

Html零基础入门教程(非常详细)

文章目录 1.认识HTML2.html 框架3.HTML常见标签4.HTML语法特征5.列表 1.认识HTML html是超文本标记语言: 目前最新版本是html5,由w3c(万维网联盟)完成标准制定。 声明文档的类型是html5 超文本标记语言。 HTML &#xff0c;全称“Hyper Text Markup Language&#xff08;超文…

【HTML】HTML基础2(一些常用标签)

目录 例子 首先是网页图标 然后是一些常用标签 插入图片 例子 <!DOCTYPE html> <html><head><link rel"icon" href"img/银河护卫队-星爵.png" type"image/x-icon"><meta charset"utf-8"><title>…

MySQL 自增列解析(Auto_increment)

MySQL数据库为列提供了一种自增属性&#xff0c;当列被定义为自增时。Insert语句对该列即使不提供值&#xff0c;MySQL也会自动为该列生成递增的唯一标识&#xff0c;因此这个特性广泛用于主键的自动生成。 一、自增列的用法 自增列具有自动生成序列值&#xff0c;整型&#…

android开发前景2019,android高级面试framework

到底是公司养活了我&#xff0c;还是我养活了公司&#xff1f; 1. 很难在一家公司干到退休 在我父母那一代&#xff0c;一个上班的职工&#xff0c;往往可以在一家单位干到退休&#xff0c;名副其实的“铁饭碗”。甚至更早之前的年代&#xff0c;职工的子女还可以接父母的班&a…

TCP的三次握手和四次挥手 | 查看网络状态

三次握手和四次挥手是在计算机网络中用于建立和终止TCP连接的协议。这两个过程是TCP协议的重要组成部分&#xff0c;确保数据的可靠传输。 三次握手指的是在客户端和服务器之间建立连接时的步骤。具体流程如下&#xff1a; 客户端向服务器发送一个连接请求报文段&#xff08;…