Springboot 增加拦截器及释放静态资源的方法
方法一:
@Configuration
public class MyInterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//配置拦截器
registry.addInterceptor(new MyInterceptor())
//对所有的资源进行拦截,包括静态资源
.addPathPatterns("/**")
.excludePathPatterns("/js/**", "/images/**","/css/**","/upload/**");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//映射虚拟路径
registry.addResourceHandler("/upload/**").addResourceLocations("file:E:\\java\\uploads\\");
}
}方法二:
yml配置映射路径:
spring: web: resources: static-locations: file:E:\\java\\uploads\\,classpath:/static/ mvc: static-path-pattern: /static/** # 这样配置后,所有以/static/开头的URL都会被映射到file:E:\\java\\uploads\\目录下的资源。
注意:如上在yml文件中配置了静态资源后,那么所有的静态资源访问前缀变成 /static/, 那么拦截排除时,只需要排除 /static即可,如下
@Configuration
public class MyInterceptorConfig implements WebMvcConfigurer {
@Resource
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 实现WebMvcConfigurer不会导致静态资源被拦截
registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/static/**");
}
}<link rel="stylesheet" href="/static/images/global.css"> <h1 class="red">测试一下</h1> <img src="/static/images/22.png" alt=""> <img src="/static/2.webp" alt="">
方法三:
只拦截需要拦截的前缀,其它不需要排除
@Configuration
public class MyInterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//配置拦截器
registry.addInterceptor(new MyInterceptor())
//拦截以/admin/** 开头的资源进行拦截,其它不拦截
.addPathPatterns("/admin/**");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//映射虚拟路径
registry.addResourceHandler("/upload/**").addResourceLocations("file:E:\\java\\uploads\\");
}
}