css文件无法加载spring boot

时间:2014-08-14 17:42:45

标签: java html css spring spring-boot

以下是我的文件目录树,html文件位于src / main / webapp / templates中,已将src / main / webapp添加到classpath中。

src──main
     ├─java
     │  └─com
     │      └─ma2oo
     │          └─quizbox
     │              ├─application
     │              ├─config
     │              └─controllers
     ├─resources
     └─webapp
         ├─static
         │  ├─css
         │  └─js
         └─templates

网络配置文件是:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        System.out.println("reached here ");
        registry.addResourceHandler("/resources/**").addResourceLocations("/static/");
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
        localeChangeInterceptor.setParamName("lang");
        registry.addInterceptor(localeChangeInterceptor);
    }
}

html中的ref链接是:

  <link href="/static/css/components.css" rel="stylesheet"></link>

当网络服务器运行时,我无法从浏览器获得预期结果,它与没有css存在一样。

有人可以帮忙吗? 提前致谢。

3 个答案:

答案 0 :(得分:4)

由于您使用的是Spring Boot,因此在webapp下拥有资源并不是最佳选择。请参阅this官方Spring Boot文档的这一部分

我建议您将/webapp下的所有静态内容移至/resources,并删除addResourceHandlers配置方法,因为Spring启动会自动正确映射静态内容。

然后,例如,您将拥有<link href="css/components.css" rel="stylesheet"></link>

对于使用静态内容的示例Spring启动项目,请查看this

答案 1 :(得分:1)

如果您已在控制器类中注释了控制器类或其中一种方法,请使用@RequestMapping("/")删除注释并尝试使用。

答案 2 :(得分:0)

您用于引用CSS文件的URL与您在资源处理程序中注册的路径模式不匹配。您需要使用以下链接:

<link href="/resources/css/components.css" rel="stylesheet"></link>

(请注意,默认情况下,Spring Boot会在webapp根目录中注册资源的处理程序。但是,通过使用@EnableWebMvc注释,您将覆盖该默认行为。如果删除该注释,则会删除现有的HTML链接会按原样运作。)