• SpringBoot2.X中的静态资源访问失效


      今天开始使用SpringBoot写项目,于是先让其能够访问静态资源,但是配置半天也不能访问我的helloWorld页面,原来,在SpringBoot2.x中,一下静态资源路径不生效了。

      classpath:/META/resources/,classpath:/resources/,classpath:/static/,classpath:/public/)不生效。

      springboot2.x以后,支持jdk1.8,运用了jdk1.8的一些特性。jdk1.8支持在接口中添加default方法,而此方法具有具体的方法实现。静态资源和拦截器的处理,不再继承“WebMvcConfigurerAdapter”方法。而是直接实现“WebMvcConfigurer”接口。通过重写接口中的default方法,来增加额外的配置。

      要想能够访问静态资源,请配置WebMvcConfigurer

     1 package io.guangsoft.web.config;
     2 
     3 import io.guangsoft.common.interceptor.EncodingInterceptor;
     4 import io.guangsoft.common.security.shiro.interceptor.PermissionInterceptorAdapter;
     5 import io.guangsoft.common.utils.SpringContextHolder;
     6 import io.guangsoft.web.interceptor.WebInterceptor;
     7 import org.springframework.context.annotation.Bean;
     8 import org.springframework.context.annotation.Configuration;
     9 import org.springframework.core.env.Environment;
    10 import org.springframework.web.servlet.HandlerInterceptor;
    11 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    12 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    13 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    14 
    15 @Configuration
    16 public class InterceptorConfig implements WebMvcConfigurer {
    17 
    18     /**
    19      * 编码拦截器
    20      */
    21     @Bean
    22     public HandlerInterceptor encodingInterceptor() {
    23         EncodingInterceptor encodingInterceptor = new EncodingInterceptor();
    24         return encodingInterceptor;
    25     }
    26 
    27     /**
    28      * 安全验证拦截器
    29      *
    30      * @return
    31      */
    32     @Bean
    33     public PermissionInterceptorAdapter permissionInterceptorAdapter() {
    34         PermissionInterceptorAdapter permissionInterceptorAdapter = new PermissionInterceptorAdapter();
    35         return permissionInterceptorAdapter;
    36     }
    37 
    38     /**
    39      * 静态资源拦截器
    40      */
    41     @Bean
    42     public WebInterceptor webInterceptor() {
    43         WebInterceptor webInterceptor = new WebInterceptor();
    44         return webInterceptor;
    45     }
    46 
    47     @Override
    48     public void addInterceptors(InterceptorRegistry registry) {
    49         //编码拦截器
    50         registry.addInterceptor(encodingInterceptor()).addPathPatterns("/**").excludePathPatterns("/upload/**", "/static/**");
    51         //安全验证拦截器
    52         registry.addInterceptor(permissionInterceptorAdapter()).addPathPatterns("/**").excludePathPatterns("/upload/**", "/static/**");
    53         //web拦截器
    54         registry.addInterceptor(webInterceptor()).addPathPatterns("/**").excludePathPatterns("/upload/**", "/static/**");
    55     }
    56 
    57     /**
    58      * 添加静态资源文件,外部可以直接访问地址
    59      */
    60     @Override
    61     public void addResourceHandlers(ResourceHandlerRegistry registry) {
    62         //第一个方法设置访问路径前缀,第二个方法设置资源路径
    63         registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    64         //添加对上传文件的直接访问
    65         Environment env = SpringContextHolder.getBean(Environment.class);
    66         String uploadFilePath = env.getProperty("upload-file-path");
    67         registry.addResourceHandler("/upload/**").addResourceLocations("file:" + uploadFilePath);
    68     }
    69 
    70 }
  • 相关阅读:
    ElasticSearch Index API && Mapping
    jQuery静态方法type使用和源码分析
    jQuery原型属性和方法总结
    jQuery原型方法first,last,eq,slice源码分析
    jQuery原型方法.pushStack源码分析
    解决浏览器窗口变小后右侧出现空白背景颜色或者图片不能全屏填充的方法
    js方法实现rgb颜色转换成16进制格式的代码的方法
    一个解决表单中的文字和文本区域(textarea)上对齐的方法
    jquery原型方法map的使用和源码分析
    jQuery原型方法each使用和源码分析
  • 原文地址:https://www.cnblogs.com/guanghe/p/10936697.html
Copyright © 2020-2023  润新知