Spring Mvc 获取参数的类型总体上来说分为五类:基本数据类型、普通对象、数组、集合List和较为复杂的对象+集合List类型的。
1.基本数据类型基本数据类型直接通过非JSON请求方式,就是通过给Controller层中的方法添加参数向前台请求即可。
2.普通对象 非JSON请求//前台
localhost:8080/demo2?name=1&number=2
//后台
@ResponseBody
@RequestMapping("demo2")
public Demo demo2(Demo demo){
System.out.println("demo:"+demo);
return demo;
}
后台方法的参数写对应对象即可,前台请求方式与基本数据类型一致,请求对象的属性,不传为null。
JSON请求//前台
localhost:8080/demo22
===========headers==============
Content-Type:application/json
============body==============
{
"name": "11",
"number": "22"
}
//后台
@ResponseBody
@PostMapping("demo22")
public Demo demo22(@RequestBody Demo demo){
System.out.println("demo:"+demo);
return demo;
}
注意:传参格式符合JSON形式即可。后台方法请求JSON类型数据必须在前面加注解@RequestBody。
3.数组 非JSON请求
//前台
localhost:8080/demo3?ids=1&ids=2&ids=3
或
localhost:8080/demo3?ids=1,2,3
//后台
@ResponseBody
@RequestMapping("demo3")
public Long[] demo3(Long[] ids){
System.out.println("ids:"+ids.length);
return ids;
}
注意前台的传参方式即可,后台直接请求数组。
JSON请求//前台
localhost:8080/demo33
===========headers==============
Content-Type:application/json
============body==============
[1,2,3]
//后台
@ResponseBody
@RequestMapping("demo33")
public Long[] demo33(@RequestBody Long[] ids){
System.out.println("ids:"+ids.length);
return ids;
}
数组类型JSON使用中括号即可。后台请求JSON类型需加@RequsetBody注解。
4.集合List 非JSON请求//前台
localhost:8080/demo4?idList=1&idList=2
或
http://localhost:8080/demo4?idList=1,2,3
//后台
@ResponseBody
@RequestMapping("demo4")
public List demo4(@RequestParam List idList){
System.out.println("ids:"+idList);
return idList;
}
注意:该方式必须添加@RequestParam进行解析。
JSON请求//前台
localhost:8080/demo5
===========headers==============
Content-Type:application/json
============body==============
[1,2,3]
//后台
@ResponseBody
@RequestMapping("demo5")
public List demo5(@RequestBody List idList){
System.out.println("ids:"+idList);
return idList;
}
前台传参与数组类型一致,后台的参数为List类型。
5.对象+List集合
该情况将对象属性与集合封装成新对象即可。
非JSON请求//前台
http://localhost:8080/demo2
=============Form Data====================
name:
111
number:
111
demoCList[0].nickname:
1
demoCList[0].number:
11
demoCList[1].nickname:
222
demoCList[1].number:
22
demoCList[2].nickname:
333
demoCList[2].number:
333
demoCList[3].nickname:
444
demoCList[3].number:
44
//后台
@ResponseBody
@RequestMapping("demo6")
public Demo demo6(Demo demo){
System.out.println("demo:"+demo);
return demo;
}
==============================================
public class Demo {
private String name;
private String number;
private List demoCList;
....省略get set方法....
}
JSON请求
//前台
localhost:8080/demo7
===========headers==============
Content-Type:application/json
============body==============
{
"name": "0616",
"number": "2",
"demoCList": [{
"id": "2",
"nickname": "1111",
"number": "11111"
}, {
"nickname": "1111",
"number": "11111"
}, {
"nickname": "1111",
"number": "11111"
}]
}
//后台
@ResponseBody
@RequestMapping("demo7")
public Demo demo7(@RequestBody Demo demo){
System.out.println("demo:"+demo);
return demo;
}
这种复杂对象更贴近实际,合理构建新对象是需要磨炼的点。List集合同样可以是复杂类型的。
6.测试
测试工具可以使用Postman,传JSON类型数据时,按下图调整好即可。



