在扩展webmvcconfiguer之后,无法从静态目录获取任何文件

lrpiutwd  于 2021-07-14  发布在  Java
关注(0)|答案(3)|浏览(302)

我有以下结构
我使用的依赖项:
Spring启动机
Spring启动机测试
Spring启动机web
Spring Boot起动器
Spring启动安全
thymeleaf-extras-springsecurity5型
mysql连接器java
Spring启动机数据jpa

@EnableWebMvc
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/icon/**").addResourceLocations("classpath:/static/img/icon/");
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
    }

}

我在index.html中尝试过这些

<img src="icon/signin.svg">
<img src="/icon/signin.svg">
<img src="./icon/signin.svg">
<img src="../static/img/icon/signin.svg">

没有成功。另外我试着把资源目录移到主目录,什么都没有。你知道吗?

xn1cxnb4

xn1cxnb41#

当你添加 @EnableWebMvc 您可以通过springboot覆盖所有的自动配置。这应该起作用:

@Configuration
@AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/icon/**").addResourceLocations("classpath:/static/img/icon/");
    }
}

另外,我刚刚看了你的目录结构图片,我敢肯定,除非我的眼睛是关闭的是,你的“资源”文件夹下没有 src/main . 它应该就在table旁边 java 文件夹:

src
|_ main
      |_ java
      |_ resources
kmb7vmvb

kmb7vmvb2#

您可以尝试如何在springboot2.2.6中提供静态内容?并链接到同一问题的其他答案。由于您使用的是springsecurity,您可能需要查看您的安全配置,因为从springboot2.0开始,静态资源在默认情况下是安全的https://spring.io/blog/2017/09/15/security-changes-in-spring-boot-2-0-m4

6ss1mwsb

6ss1mwsb3#

这就是为什么这对我不好。从springboot2.0开始,如果您使用@enablewebsecurity,您必须手动定义哪些目录和文件可以访问,哪些人可以访问

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception{
        http.authorizeRequests()
             .antMatchers("/**").permitAll() 
      ...
    }
...
}

在这种情况下,我让每个人都可以访问静态文件夹中的所有内容

<img src="icon/signin.svg"> <!--Because of registry.addResourceHandler("/icon/**").addResourceLocations("classpath:/static/img/icon/"); mapping -->
<img src="img/icon/signin.svg">

相关问题