registry.addInterceptor(myInterceptor) .addPathPatterns("/**") .excludePathPatterns("/login.html")
时间: 2023-06-15 13:06:15 浏览: 76
这是一个使用 Spring MVC 框架的拦截器配置代码。该代码将 myInterceptor 拦截器添加到所有请求路径("/**")中,并排除了 "/login.html" 路径,即在访问 "/login.html" 时不会被该拦截器拦截。拦截器可以在请求处理前、请求处理后以及视图渲染后执行一些操作,比如权限校验、日志记录等。
相关问题
InterceptorRegistration中addPathPatterns和excludePathPatterns使用先后顺序的区别
InterceptorRegistration 中的 `addPathPatterns` 和 `excludePathPatterns` 是用来指定哪些请求需要拦截,哪些请求不需要拦截的。它们的区别在于:
- `addPathPatterns`:指定需要拦截的请求路径,只有匹配上该路径的请求才会被拦截。
- `excludePathPatterns`:指定不需要拦截的请求路径,匹配上该路径的请求不会被拦截。
这两个方法的执行顺序是先执行 `addPathPatterns`,再执行 `excludePathPatterns`。因此,如果同一个请求路径既匹配了 `addPathPatterns`,又匹配了 `excludePathPatterns`,那么最终的结果是不拦截该请求。
举个例子,假设有以下配置:
```java
registry.addInterceptor(myInterceptor)
.addPathPatterns("/api/**")
.excludePathPatterns("/api/login");
```
上述配置表示拦截 `/api/**` 路径下的所有请求,但排除了 `/api/login` 请求。因此,请求 `/api/login` 不会被拦截,其他 `/api/**` 路径下的请求都会被拦截。注意,如果把 `excludePathPatterns` 配置放在 `addPathPatterns` 前面,那么 `/api/login` 请求就会被拦截了,这是因为 `excludePathPatterns` 的优先级更高。
InterceptorRegistration中addPathPatterns和excludePathPatterns详细用法+配合用法
`InterceptorRegistration`是Spring MVC中用于注册拦截器的类,其中`addPathPatterns`和`excludePathPatterns`方法用于指定拦截器拦截的请求路径和排除的请求路径。
- `addPathPatterns(String... patterns)`:指定拦截器需要拦截的请求路径,可以使用Ant格式的通配符进行匹配。
- `excludePathPatterns(String... patterns)`:指定拦截器需要排除的请求路径,同样可以使用Ant格式的通配符进行匹配。
这两个方法可以结合使用,例如:
```java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/api/**")
.excludePathPatterns("/api/login", "/api/logout");
}
}
```
上述示例中,`MyInterceptor`仅会拦截`/api/`路径下的请求,但不会拦截`/api/login`和`/api/logout`路径下的请求。
需要注意的是,`excludePathPatterns`方法并不会影响`addPathPatterns`方法所指定的路径,也就是说,如果`addPathPatterns`指定了`/api/**`,那么即使`excludePathPatterns`指定了`/api/login`,`/api/login`仍然会被拦截。因此,在使用这两个方法时要注意路径的顺序和范围。
阅读全文