SpringBoot——web开发、静态资源处理

目录

  • 一、SpringBoot Web开发探究
  • 二、SpringBoot静态资源的处理
  • 静态资源的映射规则
    • 1、第一种静态资源映射规则(webjars)
    • 2、第二种静态资源映射规则
    • 3、首页映射
    • 4、网站图标映射

在这里插入图片描述


一、SpringBoot Web开发探究

跳转到目录

  • 使用SpringBoot的步骤:
  1. 创建一个SpringBoot应用,选择我们需要的模块,SpringBoot就会默认将我们的需要的模块自动配置好。

  2. SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来

  3. 专注编写业务代码,不需要考虑以前那样一大堆的配置了。

  • 比如SpringBoot到底帮我们配置了什么?我们能不能修改?我们能修改哪些配置?我们能不能扩展?
  1. 向容器中自动配置组件 :XxxAutoconfiguration
  2. 自动配置类,封装配置文件的内容:XxxProperties

二、静态资源的处理

跳转到目录

静态资源的映射规则

跳转到目录
首先,我们搭建一个普通的SpringBoot项目,回顾一下HelloWorld程序!!

  • 写请求非常简单,那我们要引入我们前端资源,我们项目中有许多的静态资源,比如cssjs等文件,这个SpringBoot怎么处理呢?(因为SpringBoot打的是jar包)

  • 如果我们是一个web应用,我们的main下会有一个webapp,我们以前都是将所有的页面导在这里面的,对吧!但是我们现在的pom呢,打包方式是为jar的方式,那么这种方式SpringBoot能不能来给我们写页面呢?当然是可以的,但是 SpringBoot对于静态资源放置的位置,是有规定的!

  • 我们先来聊聊这个静态资源映射规则:

  • SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfiguration这个配置类里面;

  • WebMvcAutoConfiguration类的addResourceHandlers方法:(添加资源映射)

public void addResourceHandlers(ResourceHandlerRegistry registry) {
            if (!this.resourceProperties.isAddMappings()) {
                logger.debug("Default resource handling disabled");
            } else {
                Duration cachePeriod = this.resourceProperties.getCache().getPeriod();
                CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl();
                if (!registry.hasMappingForPattern("/webjars/**")) {
                    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{"/webjars/**"}).addResourceLocations(new String[]{"classpath:/META-INF/resources/webjars/"}).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl));
                }

                String staticPathPattern = this.mvcProperties.getStaticPathPattern();
                if (!registry.hasMappingForPattern(staticPathPattern)) {
                    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{staticPathPattern}).addResourceLocations(WebMvcAutoConfiguration.getResourceLocations(this.resourceProperties.getStaticLocations())).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl));
                }
            }
        }
1、第一种静态资源映射规则(webjars)

跳转到目录

  • 所有 /webjars/** ,都去classpath:/META-INF/resources/webjars/找资源
  • webjars:以jar包的方式引入静态资源;
  • webjars官网
    SpringBoot——web开发、静态资源处理_第1张图片

要使用jQuery,我们只要要引入jQuery对应版本的pom依赖即可!

<dependency>
    <groupId>org.webjarsgroupId>
    <artifactId>jqueryartifactId>
    <version>3.4.1version>
dependency>

SpringBoot——web开发、静态资源处理_第2张图片

访问:只要是静态资源,SpringBoot就会去对应的路径寻找资源,我们这里访问地址对应就是:http://localhost:8080/webjars/jquery/3.4.1/jquery.js

2、第二种静态资源映射规则

跳转到目录
SpringBoot——web开发、静态资源处理_第3张图片

  • 那我们项目中要是使用自己的静态资源该怎么导入呢?我们看下一行代码;
  • 我们去找staticPathPatternWebMvcProperties发现第二种映射规则 :/** , 访问当前的项目任意资源,它会去找 resourceProperties 这个类,我们可以点进去看一下分析:

SpringBoot——web开发、静态资源处理_第4张图片

SpringBoot——web开发、静态资源处理_第5张图片
ResourceProperties 可以设置和我们静态资源有关的参数;这里面指向了它会去寻找资源的文件夹,即上面数组的内容。 所以得出结论,以下四个目录存放的静态资源可以被我们识别:

数组中的值 在项目中的位置
classpath:/META-INF/resources/ src/main/resources/META-INF/resources/
classpath:/resources/ src/main/resources/resources/
classpath:/static/ src/main/resources/static/
classpath:/public/ src/main/resources/public/

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

3、首页映射

跳转到目录
SpringBoot——web开发、静态资源处理_第6张图片

  • 欢迎页,静态资源文件夹下的所有 index.html 页面;被 /**映射。
  • 比如我访问 http://localhost:8080/,就会找静态资源文件夹下的 index.html 新建一个 index.html
  • 在我们上面的3个目录()中任意一个;然后访问测试 http://localhost:8080/ 看结果!
4、网站图标映射

跳转到目录

  • 与其他静态资源一样,Spring Boot在配置的静态内容位置中查找 favicon.ico。如果存在这样的文件,它将自动用作应用程序的favicon。
  • 所有的 favicon.ico 都是在静态资源文件下找;
    SpringBoot——web开发、静态资源处理_第7张图片
    情况浏览器缓存, 刷新即可!
    在这里插入图片描述

你可能感兴趣的:(SpringBoot)