Springboot 增加攔截器及釋放靜態(tài)資源的方法
方法一:
@Configuration public class MyInterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { //配置攔截器 registry.addInterceptor(new MyInterceptor()) //對(duì)所有的資源進(jìn)行攔截,包括靜態(tài)資源 .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都會(huì)被映射到file:E:\\java\\uploads\\目錄下的資源。
注意:如上在yml文件中配置了靜態(tài)資源后,那么所有的靜態(tài)資源訪問前綴變成 /static/, 那么攔截排除時(shí),只需要排除 /static即可,如下
@Configuration public class MyInterceptorConfig implements WebMvcConfigurer { @Resource private MyInterceptor myInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { // 實(shí)現(xiàn)WebMvcConfigurer不會(huì)導(dǎo)致靜態(tài)資源被攔截 registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/static/**"); } }
<link rel="stylesheet" href="/static/images/global.css"> <h1 class="red">測(cè)試一下</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/** 開頭的資源進(jìn)行攔截,其它不攔截 .addPathPatterns("/admin/**"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { //映射虛擬路徑 registry.addResourceHandler("/upload/**").addResourceLocations("file:E:\\java\\uploads\\"); } }