@RequestParam,@PathParam,@PathVariable等注解区别

@RequestParam

看下面一段代码:

http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
 
 

    根据上面的这个URL,你可以用这样的方式来进行获取

    public String getDetails(
        @RequestParam(value="param1", required=true) String param1,
            @RequestParam(value="param2", required=false) String param2){
    ...
    }

    @RequestParam 支持下面四种参数

    • defaultValue 如果本次请求没有携带这个参数,或者参数为空,那么就会启用默认值
    • name 绑定本次参数的名称,要跟URL上面的一样
    • required 这个参数是不是必须的
    • value 跟name一样的作用,是name属性的一个别名
    @PathVariable

    这个注解能够识别URL里面的一个模板,我们看下面的一个URL

    http://localhost:8080/springmvc/hello/101?param1=10&param2=20
     
     

      上面的一个url你可以这样写:

      @RequestMapping("/hello/{id}")
          public String getDetails(@PathVariable(value="id") String id,
          @RequestParam(value="param1", required=true) String param1,
          @RequestParam(value="param2", required=false) String param2){
      .......
      }

      区别很明显了

      @PathParam

      这个注解是和spring的pathVariable是一样的,也是基于模板的,但是这个是jboss包下面的一个实现,上面的是spring的一个实现,都要导包

      @QueryParam

      @QueryParam 是 JAX-RS 本来就提供的,和Spring的RequestParam作用一致

      @ResponseBody

      responseBody表示服务器返回的时候以一种什么样的方式进行返回, 将内容或对象作为 HTTP 响应正文返回,值有很多,一般设定为json作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。 使用时机: 返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

      @RequestBody

      一般是post请求的时候才会使用这个请求,把参数丢在requestbody里面 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上; ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。 使用时机: A) GET、POST方式提时, 根据request header Content-Type的值来判断: application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理); multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据); 其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理); B) PUT方式提交时, 根据request header Content-Type的值来判断: application/x-www-form-urlencoded, 必须; multipart/form-data, 不能处理; 其他格式, 必须;说明:request的body部分的数据编码格式由header部分的Content-Type指定;

      • 0
        点赞
      • 1
        收藏
        觉得还不错? 一键收藏
      • 0
        评论
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

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

      抵扣说明:

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

      余额充值