詳解SpringBoot接收參數的五種形式
SpringBoot接收參數的幾種形式
在SpringBoot中獲取參數基本方式有5種,需要都掌握.
這里需要記住一個技術術語或概念
API接口: 你寫好的那個URL地址,就被稱為API接口
1. 接收常規(guī)參數
給/param/demo1這個URL接口發(fā)送id, name兩個參數
以上是以GET請求類型進行發(fā)送,實際發(fā)送的請求如下:
在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); }
如果發(fā)送的是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中弱引用和軟引用的區(qū)別以及虛引用和強引用介紹
很早Java API就添加了弱引用(WeakReference)和軟引用(SoftReference),但并不是所有的程序員都熟悉這兩個概念2014-04-04SSH框架網上商城項目第10戰(zhàn)之搭建商品類基本模塊
這篇文章主要為大家詳細介紹了SSH框架網上商城項目第10戰(zhàn)之搭建商品類基本模塊的相關資料,有一定的實用性,感興趣的小伙伴們可以參考一下2016-06-06