Spring boot静态资源过滤
Spring boot Web支持两类静态资源路径:
1、urlPatterns:"/webjars/**
",对应静态资源路径为:"classpath:/META-INF/resources/webjars/
"
2、urlPatterns:"/**
",对应静态资源路径为:
classpath:/META-INF/resources/
,
classpath:/resources/
,
classpath:/static/
,
classpath:/public/
WebMvcAutoConfiguration.EnableWebMvcConfiguration类
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
return;
}
ServletContext servletContext = getServletContext();
addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
registration.addResourceLocations(this.resourceProperties.getStaticLocations());
if (servletContext != null) {
registration.addResourceLocations(new ServletContextResource(servletContext, SERVLET_LOCATION));
}
});
}
Spring boot Web支持两类静态资源路径:
1、urlPatterns:"/webjars/**
",对应静态资源路径为:"classpath:/META-INF/resources/webjars/
"
- 通过Maven引入webjars下面jquery依赖,如下图所示。
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.5.1</version>
</dependency>
- 可通过形如 http://localhost:8080/webjars/jquery/3.5.1/jquery.js 的url路径,直接访问
webjars/jquery/3.5.1/
下面的所有的静态资源。对应url pattern为:/webjars/**
2、urlPatterns:"/**
",对应静态资源路径为:
classpath:/META-INF/resources/
,
classpath:/resources/
,
classpath:/static/
,
classpath:/public/
- 优先级顺序:META-INF/resources > resources > static(默认路径) > public
- 可以通过形如:http://localhost:8080/hello.js 的链接直接访问
classpath:/static/
下面所有的静态文件,对应url pattern为:/**
。
- WebMvcProperties类staticPathPattern参数
spring.mvc.staticPathPattern
定义了默认的url pattern:"/**
"。若开发者自定义了这个配置项,则会覆盖默认值。
ResourceHandlerRegistration类
用于封装静态资源处理器必要的信息。
pathPatterns
属性:请求路径Patterns列表,例如"/**
,"/webjars/**
"。实例化ResourceHandlerRegistration
,必须传入pathPatterns
作为参数。locationValues
属性:存放静态资源路径列表。每一个location都必须指向一个有效的文件路径,例如:如:"classpath:/METAINFO/resources/webjars/
",任何包含该路径的jar包,都可以在该路径下面存放静态资源。
ResourceHandlerRegistry
存放并管理已经注册的静态资源处理类ResourceHandlerRegistration
。
List<ResourceHandlerRegistration>
:管理的ResourceHandlerRegistration
集合addResourceHandler(String... pathPatterns)
:new一个ResourceHandlerRegistration
,并添加到List<ResourceHandlerRegistration>
集合中。