Spring boot静态资源虐我千百遍,今天终于掌握了。
Spring boot的默认配置
- 默认所有请求都将过静态资源目录,匹配到就给,匹配不到就找Controller(又名Handler)
- 默认静态资源应该放在
/static或/public或/resources
,如果资源放在这几个目录下,则能被找到
如何修改默认配置
- 定义配置类,继承自
WebMvcConfigurerAdapter
,重写addResourceHandlers
方法 - 在属性文件中重写
spring.resources.static-locations=classpath:/static/,classpath:/views/ ##定义静态资源放置的目录
spring.mvc.static-path-pattern=/** ##定义所有请求都将过静态资源目录
代价:重写方法作为特殊需求的补充,默认配置依然有效。属性文件中重写,默认的就不起效了。
映射本地磁盘图片(文件)
为江总实现图片上传功能的时候,图片上传之后,要映射到D盘的目标文件夹,发现怎么配置都没用,图片在浏览器中就是渲染不出来,最后发现是IndexController
中的 index
方法将/**
映射给了 this is project
字符串了
页面中,如何通过标签引用js、css等静态资源?
这一块内容是自己悟出来的,特别有成就感:
- 如果通过项目名+文件路径访问,则页面中的js、css文件的引用路径则相对于项目路径
- 如果通过调用接口方式访问页面,则页面中的js、css文件的引用路径则相对于接口路径
同一份js,在不同情况下的引用方式,如下所示:
<script src="../../../js/vue.min.js"></script> ##存在于某个接口指向的html文件。
<script src="js/vue.min.js"></script> ##存在于项目的index.html文件。
可以知道:../
不但可以跳转文件路径,还可以抵消接口的类映射与方法映射。
同时可以知道,在开发时,请求路径中的项目名不能省略,应与生产环境中的保持一致,否则需要增加或删除../
。
它山之石
Spring Boot 系列(四)静态资源处理
Spring Boot 静态资源处理
Spring Boot 静态资源处理
网友评论