静态资源
静态资源的默认存放位置
SpringBoot的静态资源,例如图片,视频,js,css 等资源可以放在SpringBoot指定的静态资源文件夹下。 /static,/public,/resources,/META-INF/resources 这四个文件夹是SpringBoot为我们指定的静态资源文件夹。
我们将静态资源放置其中,在启动项目时,可以通过请求获取到静态资源。
静态资源请求路径和Controller请求路径冲突问题
现在静态资源路径下有一个picture.jpg.
controller中也有请求路径和静态资源下访问picture.jpg的路径一样,那么会先访问谁呢?
@RequestMapping("/picture.jpg")
public String hello(){
return "这是一个req请求";
}
结果:
结论:当请求进来时,是去寻找controller里能不能进行处理,不能处理的话再去寻找静态资源进行处理,静态资源就会按照上述的四个路径去进行寻找,如果还找不到,就会出现404
配置静态资源的访问前缀
spring:
mvc:
static-path-pattern: /res/**
修改此配置会对SpringBoot对应的组件的值进行修改,我们可以查看对应的组件
/**
* Path pattern used for static resources.
*/
private String staticPathPattern = "/**";
这是底层源码的默认配置。
修改默认的静态资源的存放位置
spring:
web:
resources:
static-locations: [classpath:/zjh/,classpath:/public/]
static-locations进行配置对应的存放的位置,可以用逗号隔开配置多个存放位置。
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
"classpath:/META-INF/resources/",
"classpath:/resources/", "classpath:/static/", "classpath:/public/" };
这是底层源码的默认配置。
关于这些存放静态资源的位置都是有优先级之分,优先级是配置时的顺序,由上至下,由左至右。
欢迎页的配置
方式1
在静态资源路径中存放index.html
方式2
配置对应的Controller处理请求 “/”
在目前的SpringBoot中,如果你配置了静态资源的前缀,那么则无法使得欢迎页生效。
网页图标的配置
favicon.ico放在静态资源路径下即可。如果你配置了静态资源的前缀,那么则无法使得网页图标生效。