以下是我的文件目录树,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存在一样。
有人可以帮忙吗? 提前致谢。
答案 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链接会按原样运作。)