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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值