@PathVariable
路径变量,用于获取一个url地址中的一部分值,从路径中获得变量
该注解有两个属性: value、required; value用来指定要传入值的id名称
required属性用于表明,从url上指定的个别参数非必需,可能为空,但是在@RequesMapping映射地址中,需要指定所有可能匹配的映射地址
如下例:
//则需要给出两种可能匹配的地址
@RequestMapping(value = "/emp/{id}")
@RequestMapping(value = "/emp")
public void doAuditTaobao(@PathVariable(required = false) Integer id){
taobaoService.auditTaobao(id);
}
RequestMapping 上说明了@RequestMapping(value="/emp/{id}"),就是获取你URL地址中的 /emp/ 的后面的那个 {id}
@PathVariable是用来获得请求url中的动态参数的,从路径中获得变量
默认情况下,Spring会对@PathVariable注解的变量进行自动赋值,当然你也可以指定@PathVariable使用哪一个URL中的变量
定义多个URL变量
可以定义URL路由,其中可以包含URL多个变量
@RequestMapping("/user/{username}/blog/{blogId}")
@ResponseBody
public String getUerBlog(@PathVariable(value = "username" , required = false) String username , @PathVariable int blogId) {
return "user: " + username + "blog->" + blogId;
}
匹配正则表达式
通过@RequestMapping和@PathVariable,设定正则表达式做校验,可以对URL进行更加精确的控制定义。
定义语法是{变量名:正则表达式}
如下例:
@RequestMapping("/user/{username:[a-zA-Z0-9_]+}/blog/{blogId}")
[a-zA-Z0-9_]+是一个正则表达式,表示只能包含小写字母,大写字母,数字,下划线。如此设置URL变量规则后,不合法的URL则不会被处理,直接由SpringMVC框架返回404Not Found。
总结
- 在@RequestMapping注解中定义URL变量规则
- 在@RequestMapping注解方法中获取URL变量 @PathVariable
- @PathVariable指定URL变量名
- 定义多个URL变量
- 用正则表达式精确定义URL变量
网友评论