浅谈 @RequestParam 和@PathVariable
Posted xuxinstyle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈 @RequestParam 和@PathVariable相关的知识,希望对你有一定的参考价值。
首先 上两个地址:
地址①http://localhost:8989/SSSP/emps?pageNo=2
地址②http://localhost:8989/SSSP/emp/7
如果想获取地址①中的 pageNo的值 ‘2’ ,则使用 @RequestParam ,
如果想获取地址②中的 emp/7 中的 ‘7 ’ 则使用 @PathVariable
获取地址① 中的‘2’ 使用的 方法是如下
-
"/emps")(
-
public String list(@RequestParam(value="pageNo",required=false,
-
defaultValue="1")String pageNoStr,Map<String, Object>map){
-
-
int pageNo = 1;
-
-
try {
-
//对pageNo 的校验
-
pageNo = Integer.parseInt(pageNoStr);
-
if(pageNo<1){
-
pageNo = 1;
-
}
-
} catch (Exception e) {}
-
-
Page<Employee> page = employeeService.getPage(pageNo, 5);
-
map.put("page",page);
-
-
return "emp/list";
-
}
获取地址② 中的 ‘7’ 使用的方法是如下:
-
"/emp/{id}",method=RequestMethod.GET)(value=
-
public String edit(@PathVariable("id")Integer id,Map<String , Object>map){
-
Employee employee = employeeService.getEmployee(id);
-
List<Department> departments = departmentService.getAll();
-
map.put("employee", employee);
-
map.put("departments", departments);
-
return "emp/input";
-
}
大道理不讲 原理也不分析就记忆一点,那一点呢? 看‘这个符号‘?’
1. 若获取的入参的 参数 是下面这种形式 就使用 @requestParam 去获取 参数‘2’
/emps?pageNo=2
2. 若获取的入参的 参数 是下面这种形式 就使用 @PathVariable 去获取参数 ‘7’
/emp/7
多说一点,拽一下
RequestParam 汉语意思就是: 请求参数 顾名思义 就是获取参数的
PathVariable 汉语意思是:路径变量,顾名思义,就是要获取一个url 地址中的一部分值,那一部分呢? RequestMapping 上说明了@RequestMapping(value="/emp/{id}"),我就是想获取你URL地址 /emp/ 的后面的那个 {id}的。
so,就看‘?’ 若是想获取 ‘?’ 后面的pageNo 的值 ‘2’, 就使用RequestParam ,
若想获取的是url 地址的一部分 ‘7’ 就使用PathVariable
@PathVariable是用来获得请求url中的动态参数的
理论 可看 下面的博文
http://blog.csdn.net/walkerjong/article/details/7946109
@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
http://dorole.com/tag/uri-template/
http://blog.csdn.net/jaryle/article/details/51851120 @pathvariable和@RequestParam注解的区别
以上是关于浅谈 @RequestParam 和@PathVariable的主要内容,如果未能解决你的问题,请参考以下文章
@RequestBody 和 @RequestParam 有啥区别?