1、SpringBoot对静态资源的映射规则;
WebMvcAuotConfiguration类:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
return;
}
//下面这段是对"/webjars/**"请求的映射规则
Integer cachePeriod = this.resourceProperties.getCachePeriod();
if (!registry.hasMappingForPattern("/webjars/**")) {
customizeResourceHandlerRegistration(
registry.addResourceHandler("/webjars/**")
.addResourceLocations(
"classpath:/META-INF/resources/webjars/")
.setCachePeriod(cachePeriod));
}
//下面这段是静态资源文件夹映射
String staticPathPattern = this.mvcProperties.getStaticPathPattern();
if (!registry.hasMappingForPattern(staticPathPattern)) {
customizeResourceHandlerRegistration(
registry.addResourceHandler(staticPathPattern)
.addResourceLocations(
this.resourceProperties.getStaticLocations())
.setCachePeriod(cachePeriod));
}
}
//下面这段是配置欢迎页映射
@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(
ResourceProperties resourceProperties) {
return new WelcomePageHandlerMapping(resourceProperties.getWelcomePage(),
this.mvcProperties.getStaticPathPattern());
}
//下面这段是配置喜欢的图标
@Configuration
@ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true)
public static class FaviconConfiguration {
private final ResourceProperties resourceProperties;
public FaviconConfiguration(ResourceProperties resourceProperties) {
this.resourceProperties = resourceProperties;
}
@Bean
public SimpleUrlHandlerMapping faviconHandlerMapping() {
SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
//所有 **/favicon.ico
mapping.setUrlMap(Collections.singletonMap("**/favicon.ico",
faviconRequestHandler()));
return mapping;
}
@Bean
public ResourceHttpRequestHandler faviconRequestHandler() {
ResourceHttpRequestHandler requestHandler = new ResourceHttpRequestHandler();
requestHandler
.setLocations(this.resourceProperties.getFaviconLocations());
return requestHandler;
}
}
#####(1)、对 /webjars/**请求的映射规则 对于所有访问/webjars/**下面的请求,都会去classpath:/META-INF/resources/webjars/ 找资源。
什么是webjars? 在项目中以jar包的方式引入静态资源,比如引入jquery,就可以再pom.xml文件中,加入如下依赖:
在访问的时候只需要写webjars下面资源的名称即可
org.webjars
jquery
3.3.1
对于在项目中引入该jquery,可以采用如下方式:
localhost:8080/webjars/jquery/3.3.1/jquery.js
对于更多静态资源的webjars,可以访问如下网址:
http://www.webjars.org/
#####(2)、对于访问当前项目的所有请求"/**",如果没有任何控制器处理,都会去(静态资源的文件夹下)找映射,具体目录如下: “classpath:/META-INF/resources/”, “classpath:/resources/”, “classpath:/static/”, “classpath:/public/” “/”:当前项目的根路径 例如:访问localhost:8080/abc请求,没有控制器处理该请求,就会去静态资源文件夹里面找abc
#####(3)、欢迎页 静态资源文件夹下的所有index.html页面;被"/**"映射;
例如:访问localhost:8080/ 找index页面
#####(4)、所有访问 **/favicon.ico 请求,都会在静态资源文件下找对应的图标文件;