前提:前端爲ajax發送請求,後臺爲spingMVC接收參數
1、參數爲對象數組
前端:
$.ajax({
url:'/login/login.do',
type:'post',
contentType:'application/json;charset=UTF-8',
data:JSON.stringify([{
name:'zs',
password:'123456'
},{
name:'ls',
password:'888888'
}]),
dataType:'json',
success:function () {
}
});
後臺:
a、使用註解的方式
@RequestMapping("/login.do")
@ResponseBody
public Map<String,Object> login(@RequestBody List<User> users){
System.out.println(users);
return null;
}
要注意的點就是要把json對象轉爲json字符串,加上contentType爲’application/json;charset=UTF-8’,後臺的參數上加上@RequestBody註解
b、非註解方式
@RequestMapping("/login.do")
@ResponseBody
public Map<String, Object> login(HttpServletRequest request) {
Map<String, Object> result = new HashMap<String, Object>();
String reqBody = "";
try {
BufferedReader streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null) {
responseStrBuilder.append(inputStr);
}
reqBody = URLDecoder.decode(responseStrBuilder.toString(), "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
List<User> users = JSON.parseArray(reqBody, User.class);
return result;
}
2、參數爲基本類型數組
a、ajax設置traditional爲true,後臺用數組接收
前端
$.ajax({
url:"../test/testArrParam.do",
data:{arr:[1,2,3,4]},
traditional:true,
type:"post",
dataType:"json",
success:function (obj) {
alert(obj.arr);
}
});
後端
@RequestMapping("/testArrParam.do")
public Map<String, Object> testArrParam(Integer[] arr) {
Map<String, Object> result = new HashMap<>();
result.put("arr",arr);
return result;
}
b、ajax設置traditional爲true,後臺用List接口接收並加上@RequestParam註解,註解一定要加不然會報錯
前端
$.ajax({
url:"../test/testArrParam.do",
data:{arr:[1,2,3,4]},
traditional:true,
type:"post",
dataType:"json",
success:function (obj) {
alert(obj.arr);
}
});
後端
@RequestMapping("/testArrParam.do")
public Map<String, Object> testArrParam(@RequestParam("arr") List<Integer> arr) {
Map<String, Object> result = new HashMap<>();
result.put("arr",arr);
return result;
}