spingMVC後臺接收復雜參數

前提:前端爲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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章