前些时候做了个管理系统项目,前端利用vite整合打包,把文件发给我,我就放在了IDEA项目的src/main/resources
目录下:
但是启动时访问我的localhost
端口时,访问得了index页面,但是是一片黑色(静态资源显示不出来)。
刚开始,查找网上的方法,我的application.yml
中配置是这样的:
spring:
web:
resources:
static-locations: "classpath:/dist"
用了以上的方法还是无效,也查找了网上所有相关方法,全试了一遍,也是无功而返。
后面自己想一想,我没有了解spring.web.resources.static-locations
真正含义是什么就在乱配置了。。
原来,spring.web.resources.static-locations
这项是到指定目录下查找静态资源的位置,然后去寻找它jss css
等文件。
假定采用默认的配置端口,那么只有请求地址类似于“http://localhost:8080/resources/jquery.js”时,Spring Boot才会处理此请求,处理方式是将根据模式匹配后的文件名查找本地文件,那么应该在什么地方查找本地文件呢?这就是“spring.resources.static-locations”的作用了。
但是这个“指定目录”是谁指定的呢?是由spring.mvc.static-path-pattern
指定的。
换句话来说:这个配置的就是我们应该以什么样的路径来访问我们的静态资源!
spring.resources.static-locations=classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources
继续以上面的请求地址为例,“http://localhost:8080/resources/jquery.js”就会在上述的四个路径中依次查找是否存在“jquery.js”文件,如果找到了,则返回此文件,否则返回404错误。
这下我明白了,于是我把静态文件static
单独拿出来,放到resources
目录下面,然后在application.properties
中添加配置:
spring.mvc.static-path-pattern=/static/**
也就是向spring指明:我们查找静态资源文件要到static文件下找,然后再访问这些静态资源文件。
访问成功!