Spring Boot无法访问css,js等静态资源的问题
来源:互联网 发布:淘宝前三名减肥药名称 编辑:程序博客网 时间:2024/04/19 10:17
前言
在intellij IDEA中编写了一个Spring Boot项目,运行时发现外链的css样式无法载入进页面,但是按住Ctrl又能点进css文件,这证明编辑器是能识别到这个css文件的。那么浏览器中的网页没有css样式的原因就在于spring boot对静态资源的访问方式了。网上有很多方法,但大多比较复杂,不适合我们这种基础程序员,因此我挑了一个比较实用和推荐的方法进行简化讲解,希望能帮到大家。如有错误,还请大神指出。
原理
spring boot框架里面包括了很多spring框架大家族的默认配置文件,其中的springmvc配置文件中有对静态资源的限制和拦截。如果静态文件没有放在框架默认的或者自己之后手动添加的扫描路径下,那么框架是会对这些静态资源进行拦截从而导致页面找不到相关的资源
解决方法
规范项目结构
使用官方默认的扫描路径。毕竟框架的好处就是严格按照要求搭好之后几乎所有的操作都会变得简单,一句话概括就是一劳永逸
spring boot对静态资源的默认扫描路径是:
classpath:/staticclasspath:/publicclasspath:/resourcesclasspath:/META-INF/resources
那么我们直接将静态资源放入下列路径即可(以static为例)
在test.html代码中的地址为
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><img src="timg.jpg"/></body></html>
thymeleaf代码中的地址为
<img th:src="@{/timg.jpg}"/>
图片即可正确访问到
配置自定义映射路径
上面的方法的确是可行的,但是对于一个有强迫症的程序员来说,把css,js还有图片等文件放在一起可是会要了命的,大部分人的编程习惯是自己新建文件夹然后依次归类,比如这样
这个时候如果还是按照默认配置来,就会出现404的情况。
<img src="images/timg.jpg"/>
原因是因为默认路径虽然是在static
下,但并没有包含static
下的各个文件夹,因此当我们把静态文件移入这些文件夹后,spring boot就不认识了。因此,为了让spring boot认识,我们需要添加一个配置类来把我们自己的路径添加进去,具体代码如下
import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;@Configurationpublic class MyConfig extends WebMvcConfigurerAdapter{ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); }}
网上还有一些其他方法比如自己创建配置文件然后往里面进行修改。不过我个人不太推荐那些方法,重写后会破坏springboot本身的一些配置(虽然一般破坏之后反而更加方便规范了)。所以我们就尽量少用配置文件而改用java代码进行修改。 /static/**
的意思是将static下的所有文件夹及相关子文件夹都添加进扫描路径,那么修改之后重启项目就可以对static下的静态资源进行分类而且访问的时候不会出现404了。
参考资料
http://blog.csdn.net/isea533/article/details/50412212
http://www.cnblogs.com/magicalSam/p/7189476.html
- Spring Boot无法访问css,js等静态资源的问题
- Spring-Boot整合freemarker引入静态资源css、js等
- spring中静态资源css,js等的访问
- spring boot 解决无法访问静态资源
- springmvc中解决JS,CSS等静态文件无法访问问题
- web项目中url-pattern改成'/'后,js、css、图片等静态资源(404)无法访问问题解决办法
- Spring boot + Spring Security CSS静态资源拦截问题
- 96. Spring Boot之静态资源版本映射(解决js/css缓存问题)
- spring MVC js css图片等静态资源无法加载问题
- spring MVC js css图片等静态资源无法加载问题
- spring MVC 跳转js css图片等静态资源无法加载问题
- spring MVC加载静态资源(js、图片、css等)
- 解决spring mvc静态资源无法访问的问题
- spring boot整合Jersey时无法访问静态资源路径解决办法
- web.xml中配置访问资源URL<url-pattern>/</url-pattern>时无法访问.html、.jsp、.js、.css等静态资源时的解决方案
- web.xml中配置访问资源URL<url-pattern>/</url-pattern>时无法访问.html、.jsp、.js、.css等静态资源时的解决方案
- web.xml中配置访问资源URL<url-pattern>/</url-pattern>时无法访问.html、.jsp、.js、.css等静态资源时的解决方案
- Spring boot(15) spring boot admin server作为普通工程的时候,无法访问static文件夹下的静态资源
- 常量和常变量(const)
- Spring入门篇--慕课网笔记
- 「数据结构」二叉树的遍历以及Python实现
- jQuery发送ajax请求,PHP响应ajax请求(含跨域)
- 对map集合进行排序(按键排序和按值排序)
- Spring Boot无法访问css,js等静态资源的问题
- dso详解--dso原理的"大卸八块"
- Tableau功能区中有关快速计算的问题
- 获取进程id
- Sublime text 3143 授权码/注册码
- Sublime text 3143 授权码/注册码
- 新技术开发区技术服务
- Ubuntu 16安装virtualbox
- java排列组合问题汇总【经典】