spring mvc @RequestBody 和 @RequestParam 比较

1: @RequestBody

@RequestBody 注解 通过 HttpMessageReader 使请求的body反序列化成一个对象

GET、POST方式提交时, 根据 request header Content-Type 的值来判断:

  • application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
  • multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
  • 其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,使用@RequestBody来处理);
$.ajax({
    type: "POST",
    url: "/coupon/del",
    dataType : 'json',
    contentType : 'application/json;charset=UTF-8', // 设置请求的文本类型
    data: JSON.stringify(ids),
    success: function (result) {
        layer.msg(result.msg)
    }
});

控制层接收

public JSONObject del(@RequestBody String[] cids){
       RecordBean<String> result = couponService.delBatch(cids);
   if (result.isSuccessCode()) {
      return JsonBean.success(result.getMsg());
   }
   return JsonBean.error(result.getMsg());

2:@RequestParam

@RequestParam 

A) 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;

B)用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;

C) 该注解有两个属性: name、required; 

name:用来指定要传入值的key名称

required:用来指示参数是否必须绑定;当@RequestParam 被声明是Map<String, String> or MultiValueMap<String, String> required 为false

相比 Request.getParameter() 获取 优点:

通过注解的方式可以减少代码量,代码更整洁

示例代码:

$.ajax({
    type: "POST",
    url: "/coupon/del",
    data: {ids:123},
    success: function (result) {
        layer.msg(result.msg)
    }
});

控制层

 
 * 删除
    */
   @ResponseBody
   @RequestMapping("/dels")
   public JSONObject dels(@RequestParam(name = "ids") Integer cids){
      System.out.println(cids);
      return JsonBean.success("ok",cids);
   }

3:@ModelAttribute 注解获取参数

/**
    * 删除
    */
   @RequestMapping("/coupon")
   @ResponseBody
// @RequiresPermissions("coupon:del")
   public JSONObject coupon(@ModelAttribute Coupon coupon){
      return JsonBean.success("",coupon);
   }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值