Spring Boot无法访问css,js等静态资源的问题
2017-09-18 02:43
886 查看
前言
在intellij IDEA中编写了一个Spring Boot项目,运行时发现外链的css样式无法载入进页面,但是按住Ctrl又能点进css文件,这证明编辑器是能识别到这个css文件的。那么浏览器中的网页没有css样式的原因就在于spring boot对静态资源的访问方式了。网上有很多方法,但大多比较复杂,不适合我们这种基础程序员,因此我挑了一个比较实用和推荐的方法进行简化讲解,希望能帮到大家。如有错误,还请大神指出。原理
spring boot框架里面包括了很多spring框架大家族的默认配置文件,其中的springmvc配置文件中有对静态资源的限制和拦截。如果静态文件没有放在框架默认的或者自己之后手动添加的扫描路径下,那么框架是会对这些静态资源进行拦截从而导致页面找不到相关的资源解决方法
规范项目结构
使用官方默认的扫描路径。毕竟框架的好处就是严格按照要求搭好之后几乎所有的操作都会变得简单,一句话概括就是一劳永逸spring boot对静态资源的默认扫描路径是:
classpath:/static classpath:/public classpath:/resources classpath:/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下,但并没有包含[/b]
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; @Configuration public 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/50412212http://www.cnblogs.com/magicalSam/p/7189476.html
相关文章推荐
- 解决SpringBoot 整合 FreeMaker,不能js,css静态资源的问题
- spring MVC js css图片等静态资源无法加载问题
- web项目中url-pattern改成'/'后,js、css、图片等静态资源(404)无法访问问题解决办法
- myecplise 中静态资源访问路径(即引入 css ,js)的问题
- web.xml中配置访问资源URL<url-pattern>/</url-pattern>时无法访问.html、.jsp、.js、.css等静态资源时的解决方案
- spring MVC js css图片等静态资源无法加载问题
- spring MVC 跳转js css图片等静态资源无法加载问题
- web.xml中配置访问资源URL<url-pattern>/</url-pattern>时无法访问.html、.jsp、.js、.css等静态资源时的解决方案
- SpringMVC框架中,静态资源(如外部js)无法访问的问题
- 解决SpringBoot整合shiro之后无法加载静态资源文件问题
- Spring-Boot整合freemarker引入静态资源css、js等(转)
- springmvc中解决JS,CSS等静态文件无法访问问题
- Spring boot(15) spring boot admin server作为普通工程的时候,无法访问static文件夹下的静态资源
- spring boot整合Jersey时无法访问静态资源路径解决办法
- Spring boot + Spring Security CSS静态资源拦截问题
- 解决springMVC 跳转js css图片等静态资源无法加载的问题
- web.xml中配置访问资源URL<url-pattern>/</url-pattern>时无法访问.html、.jsp、.js、.css等静态资源时的解决方案
- spring boot 使用thymeleaf加载静态资源打成jar之后无法访问
- 解决使用SpringMVC时,css、js、image等静态资源无法加载的问题
- springmvc出现页面引用的js,css等静态资源访问出现404问题