springBoot对静态资源的映射规则

查找文件jar包中的  WebMvcAutoConfiguration.java

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
   if (!this.resourceProperties.isAddMappings()) {
      logger.debug("Default resource handling disabled");
      return;
   }
   Duration cachePeriod = this.resourceProperties.getCache().getPeriod();
   CacheControl cacheControl = this.resourceProperties.getCache()
         .getCachecontrol().toHttpCacheControl();
   if (!registry.hasMappingForPattern("/webjars/**")) {
      customizeResourceHandlerRegistration(registry
            .addResourceHandler("/webjars/**")
            .addResourceLocations("classpath:/META-INF/resources/webjars/")
            .setCachePeriod(getSeconds(cachePeriod))
            .setCacheControl(cacheControl));
   }
   String staticPathPattern = this.mvcProperties.getStaticPathPattern();
   if (!registry.hasMappingForPattern(staticPathPattern)) {
      customizeResourceHandlerRegistration(
            registry.addResourceHandler(staticPathPattern)
                  .addResourceLocations(getResourceLocations(
                        this.resourceProperties.getStaticLocations()))
                  .setCachePeriod(getSeconds(cachePeriod))
                  .setCacheControl(cacheControl));
   }
}
规则:

1)所有 /webjars/** ,都去:classpath:/META-INF/resources/webjars/  这里找资源

webjars :以jar包的方式引入资源

https://www.webjars.org/

比如,我要引入jQuery的jar包(下面是maven的方式引入项目),在pom.xml中写入下面的代码


    org.webjars
    jquery
    3.3.1-1

访问的时候只需要写webjars下面资源的名称

jar包目录如下:

springBoot对静态资源的映射规则_第1张图片

 

比如我们可以访问到:http://localhost:8080/jquery/3.3.1-1/jquery.js

(webjars访问公共的路径)

2)" /** "     访问当前项目的任何资源(静态资源的文件夹)

  1. " classpath:/META-INF/resources/ ",
  2. " classpath:/resources/ ",
  3. " classpath:/static/ ",
  4. " classpath:/public/ "
  5. " / "  当前项目的根路径

例如:

我在" classpath:/static/ ",里放了我自己写的文件,如下图:

springBoot对静态资源的映射规则_第2张图片

我要访问 http://localhost:8080/asserts/js/feather.min.js  ====》去静态资源里面找feather.min.js

3)欢迎页:静态资源文件夹下的所有index.html页面;都被 "/**"映射

localhost:8080/ ===》index.html

4)设置自己的图标。所有的**/favicon.ico都是在静态资源文件下找

例如:我新建了一个public文件夹,方了一张图片(favicon.ico)

springBoot对静态资源的映射规则_第3张图片

重新运行项目,看到图标已经变为你自己设置的图片

 

5)可以自己指定静态文件夹

在application.properties文件中 给 spring.resources.static-locations这个数组指定文件夹,比如我指定了一个hello和other文件夹

spring.resources.static-locations=classpath:/hello/,classpath:/other/

总结:

1) 2) 3)4)都是系统的

5)是自定义的

你可能感兴趣的:(Javaweb)