路径匹配规则之/和/*和/**
时间: 2023-09-02 18:13:40 浏览: 58
在路径匹配规则中,/、*和/**是比较常见的三种匹配方式,它们分别代表了不同的匹配规则。
/是精确匹配,表示匹配URL路径中的一级路径。例如,/user表示匹配路径为/user的请求,但不会匹配/user/detail这样的请求。
*是通配符匹配,表示匹配URL路径中的任意内容(除了路径分隔符/)。例如,/user/*可以匹配所有以/user/开头的请求,包括/user/detail、/user/list等等。
/**也是通配符匹配,但是它可以匹配URL路径中的任意内容,包括路径分隔符/。例如,/user/**可以匹配所有以/user/开头的请求,包括/user/detail、/user/list以及/user/detail/info等等。
需要注意的是,路径匹配规则会按照优先级进行匹配,一般来说精确匹配的优先级最高,其次是/**,最后是*。因此,如果同时存在多个匹配规则,需要注意规则的顺序。
总的来说,/、*和/**是路径匹配规则中比较常见的三种匹配方式,可以根据具体的应用场景选择合适的规则。
相关问题
路径/*和/**有什么区别
在Spring中,路径`/*`和`/**`的区别主要在于匹配规则和优先级。
`/*`匹配规则是只匹配一级路径,而`/**`匹配规则是匹配多级路径。
例如,`/user/*`只能匹配/user/后面再加一个路径,如/user/123,但是不能匹配/user/123/456这样的路径,而`/user/**`可以匹配/user/后面任意级别的路径。
另外,`/*`的优先级比`/**`高,如果有一个请求路径既可以匹配`/*`又可以匹配`/**`,那么会优先匹配`/*`。
需要注意的是,如果使用`/**`匹配所有请求路径,会对性能造成一定的影响,因为它会匹配所有的请求路径。因此,最好根据实际情况选择合适的路径匹配规则。
requestMapping /** 和完整路径哪个优先级高
在Spring MVC中,`@RequestMapping`注解中的路径匹配规则是基于"最长路径优先"的原则。
当存在多个`@RequestMapping`注解,其中一个使用了`/**`通配符,另一个是完整路径时,匹配优先级如下:
1. 完全匹配的路径具有最高优先级。如果请求路径与完整路径完全匹配,则将优先选择该方法处理请求。
2. 如果请求路径没有与任何完整路径完全匹配,则将进一步检查使用了`/**`通配符的路径。
3. 使用了`/**`通配符的路径将匹配请求路径中的任意路径段。如果请求路径中的某个路径段与`/**`之前的部分完全匹配,该方法将被选择来处理请求。
4. 如果存在多个使用了`/**`通配符的路径,那么将选择最长的通配符路径来处理请求。
举个例子,假设有以下两个方法:
```java
@RequestMapping(value = "/api/user", method = RequestMethod.GET)
public String handleUserRequest() {
// 处理用户请求的逻辑
return "user";
}
@RequestMapping(value = "/api/**", method = RequestMethod.GET)
public String handleRequest() {
// 处理其他请求的逻辑
return "other";
}
```
如果请求路径是`/api/user`,则`handleUserRequest()`方法将被选择来处理请求,因为它完全匹配了请求路径。
如果请求路径是`/api/something/else`,则`handleRequest()`方法将被选择来处理请求,因为它使用了`/**`通配符,可以匹配任意路径。
综上所述,完整路径具有更高的优先级,它将优先于使用`/**`通配符的路径进行匹配。