码迷,mamicode.com
首页 > 编程语言 > 详细

springMVC的注解@PathVariable是什么?详情及用法解析

时间:2019-10-10 16:12:21      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:com   art   get   ==   赋值   segment   orm   返回   tle   

在路由中定义变量规则后,通常我们需要在处理方法(也就是@RequestMapping注解的方法)中获取这个URL变量的具体值,并根据这个值(例如用户名)做相应的操作,Spring MVC提供的@PathVariable可以帮助我们:

@GetMapping("/users/{username}")
public String userProfile(@PathVariable String username) {
    return String.format("user %s", username);
}

在上述例子中,当@Controller处理HTTP请求时,userProfile的参数username会被自动设置为URL中的对应变量username(同名赋值)的值,例如当HTTP请求为:/users/tianmaying,URL变量username的值tianmaying会被赋给函数参数username,函数的返回值自然也就是:String.format("user %s", username);,即user tianmaying

在默认情况下,Spring会对@PathVariable注解的变量进行自动赋值,当然你也可以指定@PathVariable使用哪一个URL中的变量:

@GetMapping("/users/{username}")
public String userProfile(@PathVariable("username") String user) {
    return String.format("user %s", user);
}

这时,由于注解String user@PathVariable的参数值为username,所以仍然会将URL变量username的值赋给变量user

 

@RequestParam

@RequestParam和@PathVariable的区别就在于请求时当前参数是在url路由上还是在请求的body上,例如有下面一段代码:

    @RequestMapping(value="", method=RequestMethod.POST)
    public String postUser(@RequestParam(value="phoneNum", required=true) String phoneNum ) String userName) {
        userService.create(phoneNum, userName);
        return "success";
    }

这个接口的请求url这样写:http://xxxxx?phoneNum=xxxxxx,也就是说被@RequestParam修饰的参数最后通过key=value的形式放在http请求的Body传过来,对比下上面的@PathVariable就很容易看出两者的区别了。

=================================

参考资料:

获取URL变量

@RequestParam @RequestBody @PathVariable的作用

end

springMVC的注解@PathVariable是什么?详情及用法解析

标签:com   art   get   ==   赋值   segment   orm   返回   tle   

原文地址:https://www.cnblogs.com/MarlonKang/p/11648167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!