Spring Boot(3) Web开发(1)静态资源处理
基于spring boot 2.4.3版本
1.静态资源访问
1.1 静态资源目录
把静态资源放在类路径下的以下目录:/static; /public; /resources; /META-INF/resources;这些目录作为这些静态资源的根目录,如输入http://localhost:8080/4.jpg可直接访问
过程:请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面。
1.2静态资源访问前缀
配置访问静态资源路径前缀,如http://localhost:8080/res/2.jpg
spring:
mvc:
static-path-pattern: /res/**
此时访问需要加上前缀:
注意事项:加上这个后,欢迎页和favicon都会不支持
1.3 修改默认静态资源根路径:
spring:
web:
resources:
static-locations: [classpath:/templates/]
1.4 webjar
自动映射 /webjars/**
引入依赖:
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.5.1</version>
</dependency>
访问地址:http://localhost:8080/webjars/jquery/3.5.1/jquery.js 后面地址要按照依赖里面的包路径
2.欢迎页与favicon
2.1 欢迎页
本地访问localhost:8080即可访问的页面,即index.html;把该页面放到默认静态资源目录下即可,如果找不到页面,会再找controller是否有/index的映射方法;
2.2 favicon
网站的小图标:
把该图标放在默认静态资源路径即可,名字为favicon.ico
访问效果:
注意不要设置静态资源访问前缀static-path-pattern。
3.静态资源配置原理
3.1 配置静态资源的开始
- 从前面的自动配置原理我们知道,springboot 2.4 在启动时会加载130个场景的组件,即各种xxxAutoConfiguration类,通过@Condition来控制加入的组件;
- 同样,关于静态资源的场景,我们从WebMVCAutoConfiguration开始分析:
- 给容器中配了什么:往下看我们可以看到WebMvcAutoConfigurationAdapter这个类上配置了这些东西:
@Configuration(
proxyBeanMethods = false
)
@Import({
WebMvcAutoConfiguration.EnableWebMvcConfiguration.class})
@EnableConfigurationProperties({
WebMvcProperties.class, ResourceProperties.class, WebProperties.class}