Spring之Interceptor之path patterns路径匹配规则
程序员文章站
2022-04-23 10:44:52
...
Spring之Interceptor之path patterns路径匹配规则
一、简单而言:
一个*:只匹配字符,不匹配路径(/)
两个**:匹配字符,和路径(/)
二、详细及更多:
public class AntPathMatcher
extends java.lang.Object
implements PathMatcher
PathMatcher implementation for Ant-style path patterns.
Part of this mapping code has been kindly borrowed from Apache Ant.
The mapping matches URLs using the following rules:
? matches one character
* matches zero or more characters
** matches zero or more directories in a path
{spring:[a-z]+} matches the regexp [a-z]+ as a path variable named "spring"
Examples
com/t?st.jsp — matches com/test.jsp but also com/tast.jsp or com/txst.jsp
com/*.jsp — matches all .jsp files in the com directory
com/**/test.jsp — matches all test.jsp files underneath the com path
org/springframework/**/*.jsp — matches all .jsp files underneath the org/springframework path
org/**/servlet/bla.jsp — matches org/springframework/servlet/bla.jsp but also org/springframework/testing/servlet/bla.jsp and org/servlet/bla.jsp
com/{filename:\\w+}.jsp will match com/test.jsp and assign the value test to the filename variable
Note: a pattern and a path must both be absolute or must both be relative in order for the two to match. Therefore it is recommended that users of this implementation to sanitize patterns in order to prefix them with "/" as it makes sense in the context in which they're used.
三、例子:
引用:
1.
https://*.com/questions/48306597/spring-mvc-interceptor-pattern
2.
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/AntPathMatcher.html
-
一、简单而言:
一个*:只匹配字符,不匹配路径(/)
两个**:匹配字符,和路径(/)
二、详细及更多:
public class AntPathMatcher
extends java.lang.Object
implements PathMatcher
PathMatcher implementation for Ant-style path patterns.
Part of this mapping code has been kindly borrowed from Apache Ant.
The mapping matches URLs using the following rules:
? matches one character
* matches zero or more characters
** matches zero or more directories in a path
{spring:[a-z]+} matches the regexp [a-z]+ as a path variable named "spring"
Examples
com/t?st.jsp — matches com/test.jsp but also com/tast.jsp or com/txst.jsp
com/*.jsp — matches all .jsp files in the com directory
com/**/test.jsp — matches all test.jsp files underneath the com path
org/springframework/**/*.jsp — matches all .jsp files underneath the org/springframework path
org/**/servlet/bla.jsp — matches org/springframework/servlet/bla.jsp but also org/springframework/testing/servlet/bla.jsp and org/servlet/bla.jsp
com/{filename:\\w+}.jsp will match com/test.jsp and assign the value test to the filename variable
Note: a pattern and a path must both be absolute or must both be relative in order for the two to match. Therefore it is recommended that users of this implementation to sanitize patterns in order to prefix them with "/" as it makes sense in the context in which they're used.
三、例子:
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { /** - /**: 匹配所有路径 - /admin/**:匹配 /admin/ 下的所有路径 - /secure/*:只匹配 /secure/user,不匹配 /secure/user/info */ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LocaleInterceptor()); registry.addInterceptor(new ThemeInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/admin/**"); registry.addInterceptor(new SecurityInterceptor()) .addPathPatterns("/secure/*", "/admin/**", "/profile/**"); } }
引用:
1.
https://*.com/questions/48306597/spring-mvc-interceptor-pattern
2.
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/AntPathMatcher.html
-