@RequestParam 与@PathVariable 的区别

最近在做开发的过程中,突然面临一个问题:把变量当作请求地址,因此用到了@PathVariable,故此将两者进行比较一下。了解更多,请前往个人博客:风尘博客 http://www.dustyblog.cn/216.html

  1. @RequestParam:是从请求地址中获取参数,获取的是问号后面的参数,例如:
    http://localhost:8080/back/article/add?id=51 获取的是 id=5;
  •  常用来处理简单类型的绑定,通过 Request.getParameter() 获取的 String 可直接转换为简单类型的情况( String--> 简单类型的转换操作由 ConversionService 配置的转换器来完成);因为使用 request.getParameter()方式获取参数,所以可以处理 get 方式中 queryString 的值,也可以处理 post 方式中 body data 的值;
  • 用来处理 Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式 GET、POST;
  • 三) 该注解有两个属性: value、required; value 用来指定要传入值的 id 名称,required 用来指示参数是否必须绑定;

2. @PathVariable:从路径中获取变量,同时,可将该变量作为请求地址的一部分使用!例如:

http://blog.dustyblog.com/article/17

 
  1. @Controller
  2. @RequestMapping("/article")
  3. public class ArticleController {
  4.     @RequestMapping("/{articleId}")
  5.     public ModelAndView articleListView(@PathVariable int articleId){
  6.         ModelAndView mv=new ModelAndView();
  7.         ArticleEntity articleEntity=articleService.selectArticleById(articleId );
  8.         ...
  9.     }
  10. }

这时,articleId 既作为我的请求地址,又在调用服务端时作参数使用,这就是@PathVariable 的作用。

关于更多的注解区别,见http://www.dustyblog.cn/205.html


猜你喜欢

转载自blog.csdn.net/qq_41690817/article/details/80216117