一、代码实例

  首先,上两个地址:

  地址1:http://localhost:8989/SSSP/emps?pageNo=2

  地址2:http://localhost:8989/SSSP/emp/7

  如果想获取地址1中的 pageNo的值 ‘2’ ,则使用  @RequestParam ,

  如果想获取地址2中的 emp/7 中的 ‘7 ’   则使用 @PathVariable

  实例如下:

  @RequestMapping(value="/getTaobao")
public List<Taobao> doAddTaobao(@RequestParam(required = false) Integer status){
return taobaoService.getTaobao(status);
}
@RequestMapping(value = "/auditTaobao/{id}")
public void doAuditTaobao(@PathVariable Integer id){
taobaoService.auditTaobao(id);
}

  大道理不讲,原理也不分析就记忆一点,那一点呢? 看‘这个符号‘?’

  1、若获取的入参的 参数 是下面这种形式 就使用 @requestParam 去获取 参数‘2’

  /emps?pageNo=2

  2、若获取的入参的 参数 是下面这种形式 就使用 @PathVariable 去获取参数 ‘7’

  /emp/7

二、详细讲解

  RequestParam  汉语意思就是: 请求参数。顾名思义 就是获取参数的

  PathVariable  汉语意思是:路径变量。顾名思义,就是要获取一个url
地址中的一部分值,那一部分呢?

  RequestMapping
上说明了@RequestMapping(value="/emp/{id}"),我就是想获取你URL地址 /emp/ 的后面的那个 {id}的

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

  因此,就看‘?’ 若是想获取 ‘?’ 后面的pageNo 的值 ‘2’, 就使用RequestParam 。若想获取的是url 地址的一部分 ‘7’ 就使用PathVariable

1、@pathVariable和RequestParam的区别:

  顾名思义,前者是从路径中获取变量,也就是把路径当做变量,后者是从请求里面获取参数,从请求来看:

  /Springmvc/user/page.do?pageSize=3&pageNow=2

  pageSize和pageNow应该是属于参数而不是路径,所以应该添加@RequestParam的注解。

  如果做成如下URL,则可以使用@PathVariable

  someUrl/{paramId},这里的paramId是路径中的变量,应使用@pathVariable

2、使用

@PathVariable

  当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId},这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

@RequestParam

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

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

(3) 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定

浅析 @PathVariable 和 @RequestParam的更多相关文章

  1. 转载:浅析@PathVariable 和 @RequestParam

    在网上看了一篇很好的文章,讲的很清楚明了,说到了点子上(转自:https://blog.csdn.net/chuck_kui/article/details/55506723): 首先 上两个地址: ...

  2. 浅析 @PathVariable 和 @RequestParam(转发,非原创)

    首先 上两个地址:地址①http://localhost:8989/SSSP/emps?pageNo=2地址②http://localhost:8989/SSSP/emp/7如果想获取地址①中的 pa ...

  3. springmvc中@PathVariable和@RequestParam的区别

    顾名思义, @PathVariable和@RequestParam,分别是从路径里面去获取变量,也就是把路径当做变量,后者是从请求里面获取参数. 我的url; http://localhost:808 ...

  4. springmvc请求路径和请求参数的获取注解- @PathVariable和@RequestParam

    @PathVariable和@RequestParam @PathVariable是从路径里面去获取变量,也就是把路径当做变量. @RequestParam是从请求里面获取参数. 如:url:http ...

  5. @PathVariable 与@RequestParam

    http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2 你可以把这地址分开理解,其中问号前半部分:http://lo ...

  6. @PathVariable与@RequestParam的区别

    @PathVariable与@RequestParam的区别首先呢这二个注解都是接收参数使用的,下面来看一下它们的区别.@PathVariable注解@RequestMapping(value ={“ ...

  7. SpringMVC中@pathVariable和@RequestParam注解的区别

    @pathVariable和@RequestParam的区别 @pathVariable:是从路径中获取变量,也就是把路径当做变量 @RequestParam:是从请求里面获取参数 案例分析: /Sp ...

  8. SpringBoot实战(四)获取接口请求中的参数(@PathVariable,@RequestParam,@RequestBody)

    上一篇SpringBoot实战(二)Restful风格API接口中写了一个控制器,获取了前端请求的参数,现在我们就参数的获取与校验做一个介绍: 一:获取参数 SpringBoot提供的获取参数注解包括 ...

  9. springmvc中@PathVariable和@RequestParam的区别(百度收集)

    http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2 你可以把这地址分开理解,其中问号前半部分:http://lo ...

随机推荐

  1. Windows和linux下clock函数

    windows:  Calculates the wall-clock time used by the calling process. return:The elapsed wall-clock ...

  2. 在Visual Studio中使用类图描述领域模型

    右键解决方案,添加一个名称为"Domain Model"的UML类图. 首先站在整体的角度添加类,先不要任何属性. 添加Customer对Wishlist的关联,把"属性 ...

  3. sql语句练习题

    6.Mysql不要用top用limit 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢? 查找时Mysql不能用top,反正我用不了,查了下可以用limit来替换. 比 ...

  4. UITabBarController 详解之 hidesBottomBarWhenPushed的正确用法

    今天说的是在TabBar嵌套Nav时,进行Push的时候隐藏TabBar的问题. 之前项目也需要这么做,那时候iOS7还没出,也是各种搜罗,后来的解决方法是当push操作的时候自己隐藏Tabbar,p ...

  5. 【CentOS】centos7 稳定使用版本,centos镜像的下载

    命令: cat /etc/redhat-release 下载地址: https://wiki.centos.org/Download 下载版本:

  6. 【ELK】4.spring boot 2.X集成ES spring-data-ES 进行CRUD操作 完整版+kibana管理ES的index操作

    spring boot 2.X集成ES 进行CRUD操作  完整版 内容包括: ============================================================ ...

  7. python测试开发django-23.admin列表页优化和排序

    前言 列表页优化和排序 ModelAdmin django的options.py里面 ModelAdmin类定义的参数可以设置admin后台列表页面,相关的参数如下 class ModelAdmin( ...

  8. 网络拥塞控制(七)BIC-TCP

    转自:http://www.cnblogs.com/fll/archive/2009/02/24/1397592.html 上面我们已经提到了HSTCP,它通过简单的修改标准TCP的增长方式,从而达到 ...

  9. JAVA使用Marvin在图片中搜索图片

    Java对图像的处理框架比较少,目前比较流行的有Jmagick以及Marvin,但Jmagick只能处理图像(上篇Java清除图片中的恶意信息(利用Jmagick)中对Jmagick已做过简略介绍), ...

  10. An internal error occurred during: &quot;Building workspace&quot;. GC overhead limit exceeded

    1 错误描写叙述 2 错误原因 3 解决的方法