Spring boot的静态资源映射规则

一、Spring boot中对静态资源的映射源码

@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false) 
public class ResourceProperties implements ResourceLoaderAware { 
//该类用于设置和静态资源有关的各种参数,如:缓存时间

WebMvcAuotConfiguration:

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 

    if (!this.resourceProperties.isAddMappings()) { 
    logger.debug("Default resource handling disabled");
    return; 
    }
    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/,都去 classpath:/META-INF/resources/webjars/ 目录中找资源
在这里插入图片描述

例如:以jar包的方式引入jquery
https://www.webjars.org/

<!‐‐引入jquery‐webjar
在访问的时候只需要写webjars下面资源的名称 
‐‐>
<dependency> 
   <groupId>org.webjars</groupId> 
   <artifactId>jquery</artifactId> 
   <version>3.3.1</version> 
 </dependency>

2、"/" 访问当前项目的任何资源,都去静态资源的文件夹中找映射**

"classpath:/META‐INF/resources/", 
"classpath:/resources/", 
"classpath:/static/", 
"classpath:/public/" 

"/":表示当前项目的根路径

在这里插入图片描述
要访问某个静态资源,就去静态资源文件夹下找。

例如:访问Chart.min.js

http://localhost:8080/asserts/js/Chart.min.js

3、欢迎页:静态资源文件夹下的所有index.html页面。被"/"映射**
在这里插入图片描述在这里插入图片描述
4、所有的 /favicon.ico 都是在静态资源文件下找

注意自定义指定静态资源文件夹的路径

spring.resources.static-locations=classpath:/resources/img

多个路径以逗号(,)分隔。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值