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>集合中。

浙公网安备 33010602011771号