SpringMVC的 @PathVariable注解

2019-12-23  本文已影响0人  安在成丶

@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。

总结

上一篇 下一篇

猜你喜欢

热点阅读