浅析 @PathVariable 和 @RequestParam
一、代码实例
首先,上两个地址:
地址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的更多相关文章
- 转载:浅析@PathVariable 和 @RequestParam
在网上看了一篇很好的文章,讲的很清楚明了,说到了点子上(转自:https://blog.csdn.net/chuck_kui/article/details/55506723): 首先 上两个地址: ...
- 浅析 @PathVariable 和 @RequestParam(转发,非原创)
首先 上两个地址:地址①http://localhost:8989/SSSP/emps?pageNo=2地址②http://localhost:8989/SSSP/emp/7如果想获取地址①中的 pa ...
- springmvc中@PathVariable和@RequestParam的区别
顾名思义, @PathVariable和@RequestParam,分别是从路径里面去获取变量,也就是把路径当做变量,后者是从请求里面获取参数. 我的url; http://localhost:808 ...
- springmvc请求路径和请求参数的获取注解- @PathVariable和@RequestParam
@PathVariable和@RequestParam @PathVariable是从路径里面去获取变量,也就是把路径当做变量. @RequestParam是从请求里面获取参数. 如:url:http ...
- @PathVariable 与@RequestParam
http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2 你可以把这地址分开理解,其中问号前半部分:http://lo ...
- @PathVariable与@RequestParam的区别
@PathVariable与@RequestParam的区别首先呢这二个注解都是接收参数使用的,下面来看一下它们的区别.@PathVariable注解@RequestMapping(value ={“ ...
- SpringMVC中@pathVariable和@RequestParam注解的区别
@pathVariable和@RequestParam的区别 @pathVariable:是从路径中获取变量,也就是把路径当做变量 @RequestParam:是从请求里面获取参数 案例分析: /Sp ...
- SpringBoot实战(四)获取接口请求中的参数(@PathVariable,@RequestParam,@RequestBody)
上一篇SpringBoot实战(二)Restful风格API接口中写了一个控制器,获取了前端请求的参数,现在我们就参数的获取与校验做一个介绍: 一:获取参数 SpringBoot提供的获取参数注解包括 ...
- springmvc中@PathVariable和@RequestParam的区别(百度收集)
http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2 你可以把这地址分开理解,其中问号前半部分:http://lo ...
随机推荐
- BZOJ2330 SCOI2011糖果
复习了一波差分约束. http://blog.csdn.net/my_sunshine26/article/details/72849441 构图方式记住就好. 本题要倒序插入否则会被卡. #incl ...
- Linux下实现自动设置SSH代理
SSH的巨大价值体现在能够配置为代理服务器上.不像在Windows下每次还需要手动登录设置,Linux有很好的工具链能够实现自动设置SSH代理,就是expect和ssh的联合使用,再加上proxych ...
- BZOJ2924 : [Poi1998]Flat broken lines
首先旋转坐标系 $x'=x-y$ $y'=-x-y$ 则对于一个点,它下一步可以往它左上角任意一个点连线. 根据Dilworth定理,答案=这个偏序集最长反链的长度. 设f[i]为到i点为止的最长反链 ...
- 【BZOJ-3532】Lis 最小割 + 退流
3532: [Sdoi2014]Lis Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 704 Solved: 264[Submit][Status] ...
- 20172308《Java软件结构与数据结构》第三周学习总结
教材学习内容总结 第 5 章 队列 队列: 一种线性集合,其元素从一端加入,从另一端删除 元素处理:FIFO 与栈的比较 异:(1) 栈的处理过程只在栈的某一端进行:队列的处理过程在队列的两端进行.( ...
- Mac 10.13安装telnet
狗日的Mac 10.13默认不自带telnet!!!苹果你以为你的操作系统真的那么平民吗,别做梦,用你只不过是为了开发!!! 安装: brew install telnet 如果你用上述方法安装不上, ...
- VGA Output from STM32F4 Discovery board
VGA Output from STM32F4 Discovery board I love the web! There are so many cool projects out there, a ...
- C#消息队列(RabbitMQ)零基础从入门到实战演练
一.课程介绍 如果您从工作中之听过但未有接触过消息对队列(MQ),如果你接触过一点关于MQ的知识,如果没有这么的多如果的话......,那么阿笨将通过本次<C#消息队列零基础从入门到实战演练&g ...
- rawbytestring
rawbytestring Delphi 定义了 RawByteStrng 类型的字符串,定义如下: RawByteString = type AnsiString($ffff); 关于RawByte ...
- centos7安装debuginfo
转自:https://www.72zk.com/show/blog/20 查看内核版本,查找对应的内核rpm文件 [root@localhost ~]#uname -rsp Linux 3.10.0- ...