静态资源加载目录优先级
- “classpath:/META-INF/resources/”
- “classpath:/resources/”
- “classpath:/static/”
- “classpath:/public/”
- webapp
静态资源拦截源码分析
分析WebMvcAutoConfiguration类:
addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
registration.addResourceLocations(this.resourceProperties.getStaticLocations());
if (this.servletContext != null) {
ServletContextResource resource = new ServletContextResource(this.servletContext, SERVLET_LOCATION);
registration.addResourceLocations(resource);
}
});
其中getStaticPathPattern()方法是拦截路径,staticPathPattern = “/**”,拦截所有的静态资源,getStaticLocations()方法是拿到静态资源的路径,其中有四个路径:
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/" };
紧接着ServletContextResource resource = new ServletContextResource(this.servletContext, SERVLET_LOCATION),将根路径也加入路径数组中
private static final String SERVLET_LOCATION = "/";
这就组成了静态资源加载的所有目录
自定义资源加载目录
我们要访问dong文件夹下的01.html的时候,直接请求/dong/01.html是不可以进行访问的,所以我们必须要进行处理
- application.properties配置
增加配置:
spring.web.resources.static-locations=classpath:/
可以直接用请求/dong/01.html访问
spring.web.resources.static-locations=classpath:/dong/
可以直接用请求/01.html访问
增加配置:
spring.web.resources.static-locations=classpath:/
spring.mvc.static-path-pattern=/**
可以直接用请求/dong/01.html访问
spring.web.resources.static-locations=classpath:/dong/
spring.mvc.static-path-pattern=/**
可以直接用请求/01.html访问
spring.web.resources.static-locations=classpath:/dong/
spring.mvc.static-path-pattern=/dong/**
可以直接用请求/dong/01.html访问
总结一下就是,拿到请求路径中static-path-pattern中的配置/** 的 **部分,将这一部分加在static-locations路径后面,在项目中文件目录寻找静态资源
- 对象配置
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/dong/**")
.addResourceLocations("classpath:/dong/");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15765.html