目录
1. 前言
有时候前端请求发送的数据是批量的,此时就要求后端去处理请求时,获取这些批量的请求参数。一般批量的请求参数在 Java
中是以数组或者集合的形式接收的,而 SpringMVC
提供了接收和解析数据和集合参数类型的机制
本文主要是记录 SpringMVC
中当前台传过来数组的时候,如何把前台传过来的数据封装到 Controller
层方法的形参中
在了解下面参数如何传递前先记住两个结论
- 当
Ajax
以application/x-www-form-urlencoded
编码格式上传数据,必须使用JSON
对象传递数据,后台需要使用@RequestParam
或者HttpServletRequest
来接收数据 - 当
Ajax
以application/json
编码格式上传数据,必须使用JSON
字符串传递数据,后台需要使用@RquestBody
标识参数来获取数据,使用Map
或者实体对象来接收数据,如果只单单是接收一个数组,可以使用List
来接收数据
2. SpringMVC
接收数组参数
2.1. 前台数据的发送
$(function () {
var obj = {};
obj.name = "李四";
obj.nums = [1,2,3];
$.ajax({
url: "/param/test1",
type: "POST",
contentType: "application/x-www-form-urlencoded",
data: obj,
dataType: "json",
success: function(data){
}
})
})
2.2. 后台接收数据
- 后台接收数据时的形参必须和前台表单里的字段名一样
- 如果不一致要使用
@RequestParam
声明,数组必须声明
@RequestMapping(value = "/test1", method = RequestMethod.POST)
@ResponseBody
private String Test1(String name, @RequestParam("nums[]") Integer[] nums) {
System.out.println(name);
for(int i=0;i<nums.length;i++){
System.out.println(nums[i]);
}
return "success";
}
3. SpringMVC
接收 List
列表参数
3.1. 前台数据的发送
$(function () {
var obj = [];
var user1 = {"name":"李四","age":1};
var user2 = {"name":"网四","age":23};
obj.push(user1);
obj.push(user2);
$.ajax({
url: "/param/test1",
type: "POST",
contentType: "application/json",
data: JSON.stringify(obj),// 转换为JSON
dataType: "json",
success:function(data){
}
})
})
3.2. 后台接收数据
@RequestMapping(value = "/test1", method = RequestMethod.POST)
@ResponseBody
private String Test1(@RequestBody List<User> users) {//参数名任意
System.out.println(users);
return "success";
}