初学springmvc容易分不清楚这两个参数之间的用法差别,如果较长一段时间不接触,可能又会搞忘,贴个笔记,方便以后回顾以及初学者参考。如有错误,还请指正。
@PathVariable:
@PathVariable适用于RESTFULL风格的请求。
例:
//请求样式为restful http://localhost:8080/user/张三
@GetMapping("/{id}")
public String getUserByid(@PathVariable(name = "id",required = true) String id){
return id;
}
@GetMapping注解中的引号中的名字一定要与@PathVariable(name = "id",required = true)中的name相同,后面required的作用是:当为true的话, 地址中如果没有这个参数会报错;为false时则会忽略,默认值为true,即当确定顾哦来的参数一定有的时候,就不用显示定义,代码可改为:
@GetMapping("/{id}")
public String getUserByid(@PathVariable(name = "id") String id){
return id;
}
如果请求参数只有一个,代码可进一步缩减为:
@GetMapping("/{id}")
public String getUserByid(@PathVariable String id){ //@PathVariable 不用设置任何参数
return id;
}
@PathParam
常用于传统请求方式,url例子为:
http://localhost:8080/user/getUserByidAndName?id=a&&name=张三
代码举例:
@GetMapping("/getUserByidAndName")
public String getUserByidAndName(@PathParam("id") String id,@PathParam("name") String name){
return String.format("id=%s,name=%s", id,name);
}
@PathParam中的参数名要和url中一致,否则拿到的值为null。