我是靠谱客的博主 欢喜过客,最近开发中收集的这篇文章主要介绍SpringMVC中@RequestParam和@PathVariable的作用和区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在SpringMVC中,两者都是将request的里的参数的的值绑定到controller里得的方法的参数的,区别在与URL请求的写法不同。

使用@RequestParam时,URL这样写:http://localhost:8080/path?参数名=参数值

使用@PathVariable时,URL这样写:http://localhost:8080/path/参数值

@GetMapping("/on_sale")
public ModelAndView onSale(@RequestParam("productId") String productId){
    //TODO
}

 请求方式:http://localhost:8080/../on_sale?productId=xxx     (xxx代表参数值)

 @GetMapping("/on_sale")
    public ModelAndView onSale(@PathVariable(value="productId") String productId){
         //TODO
}

  请求方式:http://localhost:8080/../on_sale/xxx

@RequestParam

      @RequestParam注解的主要参数:

      value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入;

      required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报404错误码;

      defaultValue:默认值,表示如果请求中没有同名参数时的默认值,例如:

      public ModelAndView findOne(@RequestParam(value="id",defaultValue="0") Long id)

@PathVariable

       @PathVariable注解绑定请求传来的的值到方法的参数上,用于将请求URL中的模板变量映射到功能处理的方法参数上,即取出uri模板中的变量作为参数

      @PathVariable是用来获的请求url中的动态参数的

      @PathVariable绑定URI模板变量的值

通过实验解读@RequestParam和@PathVariable,代码如下:

@RestController
@RequestMapping("/api")
@Slf4j
public class UserController {

    @RequestMapping(value = "/user",method = RequestMethod.GET)
    public User findUserById(@RequestParam(value = "userId",required = true) Integer userId){
        log.info("开始根据id查询用户");
        return userService.findById(userId);
    }

    @RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
    public User findById(@PathVariable Integer id){
        log.info("开始根据id查询用户");
        return userService.findById(id);
    }

}

第一个方法的请求方式是:

第二个方法的请求方式:

通过地址可以看出两者的区别了吧!!!!

拓展:

@RequestBody注解的作用

对于注解的作用,网上已经有很多官方的解释了,在我看来:

@RequestBody注解常用来处理HttpEntity传递过来的数据,一般是处理content-type不是默认的application/x-www-form-urlcoded编码格式的数据,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型,在SpringMVC中使用注解@RequestBody可以将传递过来的JSON数据装换为对应的Java对象,可以是Java集合类型或者是字符类型。

~ GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。

~ POST请求中,可以使用@RequestBody和@RequestParam,但是使用@RequestBody,对于参数转化的配置必须统一。

 

最后

以上就是欢喜过客为你收集整理的SpringMVC中@RequestParam和@PathVariable的作用和区别的全部内容,希望文章能够帮你解决SpringMVC中@RequestParam和@PathVariable的作用和区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部