举例:
下面有两个不同的地址:
地址① http://localhost:8989/SSSP/emps?pageNo=2
地址② http://localhost:8989/SSSP/emp/7
如果想获取地址①中的 pageNo的值 ‘2’ ,则使用 @RequestParam ,
如果想获取地址②中的 emp/7 中的 ‘7 ’ 则使用 @PathVariable
获取地址① 中的‘2’ 使用的 方法是如下:
@RequestMapping("/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’ 使用的方法是如下:
@RequestMapping(value="/emp/{id}",method=RequestMethod.GET)
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";
}
开发中使用到该技术只要记住记忆窍门,哪一个窍门呢? 看入参里有没有这个‘?’
若获取的入参的 参数 是下面这种形式 格式里面带‘?’ 就使用 @requestParam 去获取 参数‘2’
/emps?pageNo=2
若获取的入参的 参数 是下面这种形式 格式里面没有‘?’ 就使用 @PathVariable 去获取参数 ‘7’
/emp/7
从汉语意思上记忆:
RequestParam 汉语意思就是: 请求参数 顾名思义 就是获取参数的
PathVariable 汉语意思是:路径变量,顾名思义,就是要获取一个url 地址中的一部分值,那一部分呢? RequestMapping 上说明了@RequestMapping(value="/emp/{id}"),我就是想获取你URL地址 /emp/ 的后面的那个 {id}的。所以使用@PathVariable注解在@RequestMapping映射路径上要写入获取的那个值!