Spring启动项目不加载资源

时间:2016-06-29 03:14:41

标签: java twitter-bootstrap spring-boot freemarker

我有这个结构的春季启动项目

srs-
 -main
   -java
      -MvcConfigurer.java
      -LkApplication.java
   -resource
      -static
         -css
      -templates
         -layout
           -defoultLayout.ftl
           -header.ftl
           -footer.ftl
        -index.ftl

defoultLayout.ftl我包含CSS文件

<head>
    <meta charset="utf-8">
    <link rel='stylesheet' href='../../static/css/bootstrap.min.css'>
    <link rel='stylesheet' href='../../static/css/core.css'>
</head>

但它没有加载。我有一些类似结构的项目,它们都已加载但不是。

我的课程:

@SpringBootApplication
public class LkApplication {

    public static void main(String[] args) {
        SpringApplication.run(LkApplication.class, args);
    }
}

@Configuration
@EnableWebMvc
public class MvcConfigurer extends WebMvcConfigurerAdapter {
    @Bean
    public ViewResolver viewResolver() {
        FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
        resolver.setCache(true);
        resolver.setPrefix("");
        resolver.setSuffix(".ftl");
        resolver.setContentType("text/html; charset=UTF-8");
        return resolver;
    }

    @Bean
    public FreeMarkerConfigurer freemarkerConfig() throws IOException, TemplateException {
        FreeMarkerConfigurationFactory factory = new FreeMarkerConfigurationFactory();
        factory.setTemplateLoaderPaths("classpath:templates", "src/main/resource/templates");
        factory.setDefaultEncoding("UTF-8");
        FreeMarkerConfigurer result = new FreeMarkerConfigurer();
        result.setConfiguration(factory.createConfiguration());
        return result;
    }

    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

如何将资源文件加载到springboot项目? 我使用:springboot,freemarker,bootstrap

3 个答案:

答案 0 :(得分:1)

如果是maven或gradle,则标准文件夹结构应为src/main/resources。然后构建将它们放在您的(假设)可执行弹簧启动jar中。

如果您没有安全阻止任何端点,您应该能够引用这些文件,如下所示;

<link rel='stylesheet' href='/css/core.css'>

注意&#39;静态&#39;被剥夺了路径。

答案 1 :(得分:0)

Spring Boot默认查找resources目录下的资源。我的项目中遇到了同样的问题。

将目录名resource更改为resources //记录 s

在此更改后,刷新项目,它将起作用

答案 2 :(得分:0)

对我有用的是:

<link rel="stylesheet" href="bootstrap-3.3.7/css/bootstrap.min.css" />
<script src="jquery/jquery-3.2.1.min.js"></script>
<script src="bootstrap-3.3.7/js/bootstrap.min.js"></script> 

SpringBoot中的默认位置是:

  • / META-INF / resources /
  • /资源/
  • /静态/
  • /公共/

这意味着起点已经在正确的目录中,您需要从那里开始,即:

  

自举-3.3.7 / CSS / bootstrap.min.css

没有任何斜线或任何前期!