使用SpringBoot开发web时,静态资源放在那里?
静态资源的存放路径,通过源码中WebMvcAutoConfiguration类中的addResourceHandlers()方法指定:"/webjars/**"
目录下
SpringBoot项目中放入的 js、css等静态资源,不像maven中放在webapp下,SpringBoot是把这些文件打成jar包引入,以 jar 包的形式提供静态资源。
从webjar官网中获取依赖,引入到pom文件即可
此时已经引入了jquery的jar包,在访问时直接从webjars开始写相关路径。
那么要是自己写静态资源文件该怎么办呢?
源码中WebMvcAutoConfiguration类中的进入getResourceLocations中,最后可以看见
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]
{"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"}
可以看见我们可以在SPringBoot项目中的resources文件夹中创建如下四种文件来存放我们自己的静态资源,SpringBoot会自动扫描这些文件,当然我们也可以把自己写的文件打成 jar 再引入,但是我们的目录结构就必须和别人的一样,就很麻烦(所以不推荐)
- resources
- /META-INF/resources/
- /resources/
- /static/
- /public/
我们该如何设置欢迎页呢?
在源码中,WebMvcAutoConfiguration类中的getWelcomePage()-> getIndexHtml() 方法中可以看见location + “index.html”
,而location就是上面的CLASSPATH_RESOURCE_LOCATION
一大堆位置,也就是说我们在上面这四个文件夹中的index.html
文件就是欢迎页
我们怎么设置网页标签的 logo ?
网页标签logo有固定的名字:favicon.ico
我们只需要将favicon.icon
文件放在上面四个文件夹中的任意一个即可。
那如何自定义静态资源存放目录呢?
一般来说约定优于配置,不遵守约定,就自己配置。我们可以直接修改存放路径,在properties文件中,可以一次配置多个,用逗号隔开
spring.resources.static-locations=classpath:/res/, classpath:/img/
注意:自定义静态资源路径后,默认存放路径会失效