一、@PathVariable
代码部分
为了方便观察 ,特地将@PathVariable注解里面的名字和参数名不一致
即@PathVariable(“id”) String test, @PathVariable(“name”) String test1
而不是@PathVariable(“id”) String id, @PathVariable(“name”) String name
postman测试
输出结果: aa—bb
通过结果可以看出, 当@PathVariable注解声明了值(“id”) 取的是{id}的值,和形参取什么名字无关(但强烈推荐参数取名保持一致!)
实际应用场景:例如某个用户管理系统,A用户登录的url为:/index/userA ,B用户登录的url为:/index/userB
// A,B用户请求 分别会打印 userA, userB
@GetMapping(value = "/index/{user}")
private String test(@PathVariable("user") String user){
System.out.println(user);
}
=================================================================
二、@RequestParam
代码部分
postman测试
输出结果:a—b 图略
一句话总结:
@PathVariable用于url将本身路径作为参数,而@RequestParam是取参数 = 号后面值
拓展:
当url中的参数名字和形参的参数名相同时,该注解可以省略。而我们实际开发中,取名基本都是规范的,命名保持一致,这也是为什么有的时候我们不用@RequestParam注解 效果也是一样的
输出结果: a—b
三、
至于 @Param 和@RequestParam名字有点像,就像java和javascript一样,他们之间并没有什么联系,@Param注解是用来声明dao层方法参数名,和mybatis的xml配置文件里面字段名相对应,例如:
public String test(@param(“id”) int id,@param(“name”) String name )
在xml中对应 #{id} #{name} 取值