初学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。
博客主要针对初学SpringMVC的人,指出容易混淆@PathVariable和@PathParam的用法,且长时间不接触易遗忘。介绍了@PathVariable适用于RESTFULL风格请求,@PathParam常用于传统请求方式,并给出了相关代码示例。

1万+

被折叠的 条评论
为什么被折叠?



