7中说了thymeleaf,哪还有一个目录是static
- 那么就来研究一下静态资源
-
静态资源,springboot底层是怎么去装配的,都在WebMvcAutoConfiguration有答案,去看一下
-
通过上述的源码发现两个东西:
webjars
和getStaticLocations()
-
1)、webjars的方式处理静态资源
-
webjars的官网如下:
-
进去之后:里面就是各种各样的jar包
-
这里使用jQuery做演示
- 导入jQuery的依赖
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.4.1</version>
</dependency>
-
导入之后:发现多了这么一个jar包,现在我们去直接访问一下
-
是可以直接访问的,为什么?
2)、getStaticPathPattern(),点进去看一下
发现是如下这么一个方法
public String[] getStaticLocations() {
return this.staticLocations;
}
那就继续点击staticLocations看一下
"classpath:/META-INF/resources/", <!--这个就不多说明,前面已经见过这种目录了 -->
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"
发现有四种方式可以放静态资源,那就来测试一下
3)、resources/,static/,public/的优先级
- 测试
发现resources下的优先级最高
- 删掉resources中的资源文件,继续测试
发现static目录其次
因此:结果就出来了
- resources目录下的优先级最高
- 其次是static
- 最后是public
资源放置建议:
- public放置公有的资源,如:img、js、css....
- static放置静态访问的页面,如:登录、注册....
- resources放置动态资源,如:用户管理.....