SpringBoot释放静态资源【css、js】
- 将路径改为绝对路径就可以自动释放资源
- 即在src的路径前面加上/,即可释放css、js等静态资源
分析:
springboot默认配置:
spring.mvc.static-path-pattern:/**
spring.web.resources.static-locations:classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources
其中:
-
spring.mvc.static-path-pattern
表示静态文件URL匹配头,也就是静态文件的URL地址开头。
Springboot默认为:/**。【可以省略不写,会自动配置】
-
spring.web.resources.static-locations
表示实际静态文件地址,也就是静态文件URL后,匹配的实际静态文件。
旧版Springboot的配置项为:spring-resources-static-locations;在2.2.5版本之后,旧版本配置已经失效。
file:SystemData就是映射本地文件
Springboot默认为:classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources。【可以省略不写,会自动配置】
-
Spring释放静态资源(官方文档):https://www.baeldung.com/spring-mvc-static-resources
举例说明:
前端页面使用了相对路径:
<link href="css/bootstrap.min.css" rel="stylesheet">
控制层使用了层级的路径映射
@RequestMapping(value="stu")
public class StudentController{
@RequestMapping("show")
public String show() {
...
}
}
-
页面会直接拼接到最后一个/的后面
【此时,springboot使用的是默认写法】
-
请求 URL: http://localhost:8080/stu/css/bootstrap.min.css
-
实际映射的 URL: http://localhost:8080/stu/static/css/bootstrap.min.css
解决方案1【修改SpringBoot的配置文件】
spring.mvc.static-path-pattern:/stu/**
此时:
-
请求 URL: http://localhost:8080/stu/css/bootstrap.min.css
-
实际映射的 URL: http://localhost:8080/static/css/bootstrap.min.css
-
绝对路径为/stu/下的文件会去绝对路径/static下查找,所以,8080/stu/=》8080/static/css
解决方案2【使用绝对路径】
<link href="/css/bootstrap.min.css" rel="stylesheet">
-
请求 URL: http://localhost:8080/css/bootstrap.min.css
-
实际映射的 URL: http://localhost:8080/static/css/bootstrap.min.css
-
绝对路径为/下的文件会去绝对路径/static下查找,所以,8080/=》8080/static/css