首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring Boot不支持静态内容

Spring Boot不支持静态内容
EN

Stack Overflow用户
提问于 2014-07-10 02:31:23
回答 15查看 200.7K关注 0票数 200

我不能让我的Spring-boot项目提供静态内容。

我在src/main/resources下放置了一个名为static的文件夹。在它里面有一个名为images的文件夹。当我打包并运行应用程序时,它找不到我放在该文件夹中的图像。

我尝试将静态文件放在publicresourcesMETA-INF/resources中,但都不起作用。

如果我jar -tvf app.jar,我可以看到文件在jar中的右文件夹中:例如/static/images/head.png,但是调用:http://localhost:8080/images/head.png,我得到的只是一个404

你知道为什么spring-boot找不到这个吗?(我使用的是1.1.4BTW)

EN

回答 15

Stack Overflow用户

发布于 2014-09-17 05:45:54

与spring-boot声明的不同,为了让我的spring-boot jar提供内容:我必须通过这个config类专门注册我的src/main/resources/static内容:

@Configuration
public class StaticResourceConfiguration implements WebMvcConfigurer {

    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
            "classpath:/META-INF/resources/", "classpath:/resources/",
            "classpath:/static/", "classpath:/public/" };

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
            .addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
    }
}
票数 90
EN

Stack Overflow用户

发布于 2014-09-29 02:39:39

我遇到了类似的问题,结果证明简单的解决方案是让我的配置类扩展WebMvcAutoConfiguration

@Configuration
@EnableWebMvc
@ComponentScan
public class ServerConfiguration extends WebMvcAutoConfiguration{
}

我不需要任何其他代码来支持我的静态内容,但是,我确实在src/main/webapp下放置了一个名为public的目录,并将maven配置为指向src/main/webapp作为资源目录。这意味着public被复制到target/classes中,因此在运行时位于类路径上,以供spring-boot/tomcat查找。

票数 50
EN

Stack Overflow用户

发布于 2015-02-23 21:03:25

查找映射到"/“或未映射路径的控制器。

我有一个这样的问题,得到了405个错误,几天来一直在努力地撞我的头。问题原来是我忘了用@RequestMapping注释来注释的@RestController注释控制器。我猜这个映射路径缺省为"/“,并且阻塞了静态内容资源映射。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24661289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档