• 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 }
  • 相关阅读:
    JDBC遇到向ORACLE数据库表执行插入操作时,报错“列在此处不允许”
    关于对称加密和非对称加密以及签名,认证和证书的理解
    .net framework 各版本区别
    数据库设计三大范式
    业务系统设计
    修改 Windows 服务器默认远程端口3389
    iis读取不到本地证书问题 提示已经导入成功
    HTTPS 建立连接的详细过程
    使用ServiceStack构建Web服务
    转-微信支付(公众号支付JSAPI)
  • 原文地址:https://www.cnblogs.com/guanghe/p/10936697.html
Copyright © 2020-2023  润新知