解决springboot 无法访问静态资源css js的问题
相信很多人初学springboot的时候都被这个问题困扰了很久,这个问题跟很多东西有关,下面来一一讲解。1、静态文件放置的目录是否正确springboot项目在自动生成的时候会有两个文件夹,一个是static,一个是templates,如果我们使用<dependency><groupId>org.springframework.boot</gr...
相信很多人初学springboot的时候都被这个问题困扰了很久,这个问题跟很多东西有关,下面来一一讲解。
1、静态文件放置的目录是否正确
springboot项目在自动生成的时候会有两个文件夹,一个是static,一个是templates,如果我们使用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
来进行页面的跳转,默认情况下我们是将html页面放置在templates的文件夹下,css、js、img放置在static文件夹下。
2、springboot的版本是否是2.+
springboot在2.+时,我们需要配置一个静态资源映射(非常关键),同时此操作可以进行拦截器的扩展,具体不在这里说明,注意要继承WebMvcConfigurationSupport !
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
@SpringBootConfiguration
public class InterceptorConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 静态资源映射
registry.addResourceHandler("/").addResourceLocations("/**");
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
}
}
3、不要在配置文件中配置默认的静态文件路径!如果之前有配置的通通删除
下图我的配置文件信息,没有所谓的静态文件路径,只有端口号等基本信息
4、引入CSS的方式
网上有很多人说用th:href的标签可以引入,但前提是你的静态资源文件没有被拦截,所以如果你的静态资源文件被拦截了,请看第二步。
如果你的文件路径跟我是一样的,没有被拦截的情况下只需要下方代码就可正常引入,不需要加/static/的前缀,因为我们在静态映射中已经映射了。
<link rel="stylesheet" href="css/bootstrap.min.css">
5、如何测试静态资源文件是否被拦截
你的项目在启动之后可以尝试各种路径,例如localhost:8080/static/css/xxx.css 或localhost:8080/css/xxx.css,如果已经访问过这些显而易见的路径都是404的话,100%被拦截了。
6、最后的玄学
有些人按操作做完之后重启项目也没有效果,此时请关掉idea软件重开,要关掉所有idea的窗口!
更多推荐
所有评论(0)