SpringBoot静态资源与首页配置实现原理深入分析

目录
  • 一、静态资源导入
    • 1、webjars
    • 2、静态资源映射规则
    • 3、自定义静态资源路径
  • 二、首页配置和图标
    • 1、首页配置
    • 2、图标

一、静态资源导入

关键源码可以看WebMvcAutoConfiguration这个类下面的addResourceHandlers方法

在这个方法中,我们有几个重点需要了解一下

1、webjars

可以理解为以maven的形式引入web的相关jar包

请求路径为/webjars/**的,都会去classpath:/META-INF/resources/webjars/下寻找相关的静态资源

2、静态资源映射规则

如果在项目中要使用我们自己导入的静态资源,它的映射规则是怎么样的呢,我们分析源码可以得出

以下四个路径的中存放的静态资源可以被识别,优先

resource(注意,此处是resource下面的resource文件夹)>static (默认)>public

"classpath:/META-INF/resources/"
"classpath:/resources/"
"classpath:/static/" 
"classpath:/public/"

3、自定义静态资源路径

我们可以使用spring.web.resources.static-locations

在yaml文件中自定义静态资源文件的路径,例如我们限制静态文件都必须放在static目录下

也可以使用spring.mvc.static-path-pattern,当前项目 + static-path-pattern + 静态资源名 = 静态资源文件夹下找

spring:
  web:
    resources:
      static-locations: classpath:/static/
  mvc:
    static-path-pattern: /static/**

随后我们访问一下静态资源,发现只有放在static下面可以被访问到

二、首页配置和图标

1、首页配置

springboot它会去找静态资源文件夹下的index.html(注意不能配置spring.mvc.static-path-pattern)或者是controller处理/index转发的页面

下面是WebMvcAutoConfiguration这个类中关于首页的相关方法

@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext, FormattingConversionService mvcConversionService, ResourceUrlProvider mvcResourceUrlProvider) {
    WelcomePageHandlerMapping welcomePageHandlerMapping = new WelcomePageHandlerMapping(new TemplateAvailabilityProviders(applicationContext), applicationContext, this.getWelcomePage(), this.mvcProperties.getStaticPathPattern());
    welcomePageHandlerMapping.setInterceptors(this.getInterceptors(mvcConversionService, mvcResourceUrlProvider));
    welcomePageHandlerMapping.setCorsConfigurations(this.getCorsConfigurations());
    return welcomePageHandlerMapping;
}
private Resource getWelcomePage() {
    String[] var1 = this.resourceProperties.getStaticLocations();
    int var2 = var1.length;
    for(int var3 = 0; var3 < var2; ++var3) {
        String location = var1[var3];
        Resource indexHtml = this.getIndexHtml(location);
        if (indexHtml != null) {
            return indexHtml;
        }
    }
    ServletContext servletContext = this.getServletContext();
    if (servletContext != null) {
        return this.getIndexHtml((Resource)(new ServletContextResource(servletContext, "/")));
    } else {
        return null;
    }
}
private Resource getIndexHtml(String location) {
    return this.getIndexHtml(this.resourceLoader.getResource(location));
}
private Resource getIndexHtml(Resource location) {
    try {
        Resource resource = location.createRelative("index.html");
        if (resource.exists() && resource.getURL() != null) {
            return resource;
        }
    } catch (Exception var3) {
    }
    return null;
}

2、图标

官网是说在静态资源路径下放置一个favicon.ico,spring boot就会自动识别

如图

图标加载成功 可能会因为缓存加载不出来 清除缓存多试几次就行了

到此这篇关于SpringBoot静态资源与首页配置实现原理深入分析的文章就介绍到这了,更多相关SpringBoot静态资源内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Springboot静态资源的访问方法介绍

    目录 1.官方文档 2.基本介绍 3.快速入门 4.静态资源访问注意事项和细节 1.官方文档 在线文档 2.基本介绍 只要静态资源放在类路径下: /static . /public . /resources . /META-INF/resources 可以被直接访问- 对应文件 WebProperties.java 直接放到resources目录下是访问不到的,这里的 /resources是指在resource目录的创建resources目录 private static final Strin

  • SpringBoot web静态资源映射实现步骤详解

    目录 静态资源映射规则 自定义静态资源映射规则 静态资源映射规则 “/**” 访问当前项目任何资源,全部找静态资源的文件夹进行映射 静态资源的文件夹包括: "classpath:/META-INF/resources/","classpath:/resources/","classpath:/static/", "classpath:/public/" 静态资源路径下的文件,可以通过地址栏直接访问. 例如:我们在在static

  • SpringBoot详细讲解静态资源导入的实现

    目录 SpringBootWeb开发 1. 静态资源导入 webjars 使用自己的静态资源 总结 2.制作特殊的首页 图标转变 Thymeleaf模板引擎 引入Thymeleaf 取值 有无转义 循环 SpringBootWeb开发 回顾一下: springboot帮助我们配置了什么,能不能进行修改,能修改哪些,能否扩展? xxxAutoConfiguration:向容器中自动配置组件 xxxProperties:自动配置类,装配配置文件中自定义的一些内容 开发要解决的问题: 导入静态资源 首

  • SpringBoot静态资源的访问方法详细介绍

    目录 一. 静态资源 二. 静态资源访问目标 三. 静态资源访问前缀 1. 默认访问路径为 / 2. 配置访问前缀 3. 配置静态资源默认访问位置 四. 欢迎页及网页图标设置 1. 欢迎页的设置 2. 网页图标的设置 分析源码 一. 静态资源 在web场景中的静态图片.html网页等 二. 静态资源访问目标 在SpringBoot中,静态资源访问目标有 resources文件下的 public.resources.static 以及 META-INF 文件夹下的 recources 如下图所示:

  • SpringBoot Web详解静态资源规则与定制化处理

    目录 1.相关概念 2.静态资源目录 3.静态资源访问前缀 4.欢迎页支持 5.自定义favicon 6.源码分析 1.相关概念 Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. 建议使用Spring Boot的默认配置方式,如果需要特殊处理的再通过配置文件进行修改. 如果想要自己完全控制WebMVC,就需要在@Configuration注解的配置类上增加@EnableWebMvc, 增加该注解以后WebMvcAuto

  • SpringBoot 静态资源导入及首页设置问题

    本节了解一下 SpringBoot 中 Web 开发的静态资源导入和首页设置,对应 SpringBoot-03-Web 项目. 1. 静态资源导入 在 Web 开发过程中,我们需要接触许多的静态资源,如 CSS.JS.图片等:在之前的开发过程中,这些资源都放在 Web 的目录下,用到的时候按照对应路径访问即可.不过在 SpringBoot 项目中,没有了 Web 的目录,那这些静态资源该放到哪里去,又要如何访问呢? 由于是 Web 应用中的配置,所以查看对应的自动配置类 WebMvcAutoCo

  • SpringBoot静态资源css,js,img配置方案

    一.概述 springboot 默认静态资源访问的路径为:/static 或 /public 或 /resources 或 /META-INF/resources 这样的地址都必须定义在src/main/resources目录文件中,这样可以达到在项目启动时候可以自动加载为项目静态地址目录到classpath下 ,静态访问地址其实是使用 ResourceHttpRequestHandler 核心处理器加载到WebMvcConfigurerAdapter进行对addResourceHandlers

  • Springboot静态资源访问实现代码解析

    springboot静态资源加载默认是从/static(或/public或/resources或/META-INF/resources) 目录下加载静态资源. 加载的优选级别:/META-INF/resources>/resources>/public>/static 静态资源的加载源码分析(WebMvcAutoConfiguration类) 首先从WebMvcAutoConfiguration.class自动配置类部分代码来看: //添加静态资源规则 public void addRe

  • SpringBoot静态资源CSS等修改后再运行无效的解决

    目录 SpringBoot静态资源CSS等修改后再运行无效问题 问题背景 下面来设置md5方式 SpringBoot开发中的一些小坑-CSS失效 SpringBoot静态资源CSS等修改后再运行无效问题 问题背景 在美化网页过程中,修改好CSS后在本地已经可以显示出我想要的效果了.于是就把修改好后的css加载到springboot中运行,结果问题出现了:我修改后的css样式始终不能加载!打开F12看到css样式成功的被请求,然后再进一步点进去看css文件,发现我修改的部分并没有加载,现在用的cs

  • 关于SpringBoot静态资源路径管理问题

    目录 一.默认静态资源路径 二.增加静态资源路径前缀 一.默认静态资源路径 类路径下: static public resources 这几个目录为默认静态资源访问的目录 二.增加静态资源路径前缀 动态资源和静态资源路径重复时会优先访问动态资源,为了避免路径重复,可以为静态资源路径增加前缀 1.目录结构 2.配置文件 spring: mvc: static-path-pattern: /static_path/** 3.访问结果 到此这篇关于SpringBoot静态资源路径管理的文章就介绍到这了

  • SpringBoot静态资源路径配置及主页显示

    静态资源路径 静态资源支持放在以下路径中,访问优先级从上到下: classpath:/META-INF/resources/ classpath:/resources/ classpath:/static/ # 默认路径 classpath:/public/ 其中 classpath 为 src/main/resources 目录. 请求地址为:http://localhost:8080/xx.js 首页 文件位置: classpath:/static/favicon.ico classpath

  • 聊聊springboot静态资源加载的规则

    目录 静态资源映射规则 1.webjars 2.springboot内置默认访问路径 3.首页处理 4.网站图标 我们经常会使用springboot创建web应用,在springboot中金静态资源是如何存放的呢? 静态资源映射规则 我们先创建一个springboot项目.使用https://start.spring.io/idea内置创建一个项目,不多说了. 我们要引入我们前端资源,我们项目中有许多的静态资源,比如css,js等文件,我们以前写 项目与都是自己建立文件夹,自己设计访问路径,但是

  • 详解nginx静态资源服务器简单配置

    传统的web项目,一般都将静态资源存放在 webroot的目录下,这样做很方便获取静态资源,但是如果说web项目很大,用户很多,静态资源也很多时,服务器的性能 或许就会很低下了.这种情况下一般都会需要一个静态资源的服务器. 搭建nginx服务器首先得安装nginx服务,关于nginx服务的安装可以参考我的另一篇博客<nginx服务安装>这里直接介绍静态服务器的配置 进入nginx安装目录的conf目录下,修改nginx.conf文件,在一个server{}中添加 一个location 部分配置

随机推荐