zoukankan      html  css  js  c++  java
  • 【串线篇】spring boot对静态资源的映射规则

    WebMvcAutoConfiguration的内部类
    WebMvcAutoConfigurationAdapter

     

    其中ResourceProperties点进去

    其中addResourceHandlers方法

    规定了静态资源(jQuery.js/html)的引用位置  

                  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)); 15 }
    
                                   String  staticPathPattern  =  this.mvcProperties.getStaticPathPattern();
    
                                   //静态资源文件夹映射
    
                                   if  (!registry.hasMappingForPattern(staticPathPattern))  {
    
                                            customizeResourceHandlerRegistration(
    
                                                             registry.addResourceHandler(staticPathPattern)
    
                                                                              .addResourceLocations(
    
                                                                                                this.resourceProperties.getStaticLocations())
    
                                   .setCachePeriod(cachePeriod)); 24 }
    
                          }


      //配置欢迎页映射

                          @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/ 找资源;

     


    webjars:以jar包的方式引入静态资源(选择maven方式); http://www.webjars.org/

    localhost:8080/webjars/jquery/3.3.1/jquery.js

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

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

    类路径classpath就是Java 与resources

        "classpath:/META‐INF/resources/",即resources下再建/META‐INF/resources/
        "classpath:/resources/",即resources下再建resources
        "classpath:/static/",即resources下再建static
        "classpath:/public/"即resources下再建public
        "/":当前项目的根路径

    localhost:8080/abc === 去静态资源文件夹里面找abc

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

    localhost:8080/ 找index页面

    4)、所有的 **/favicon.ico 都是在静态资源文件下找;

     

     

     

     

  • 相关阅读:
    openstack项目【day23】:glance基础
    openstack项目【day23】:openstack组件介绍
    openstack项目【day23】:云计算介绍(一)
    学习有五个层次和境界
    gdb 初步学习记录
    Linux samba 服务的配置
    QT 5.7.0 移植之 tslib 编译配置
    tiny4412 u-boot 启动参数的设置
    Windows 只能安装32位虚拟机问题
    Tiny4412 虚拟机交叉编译环境的设置以及编译u-boot 和 kernel
  • 原文地址:https://www.cnblogs.com/yanl55555/p/12091341.html
Copyright © 2011-2022 走看看