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

目录

在这里插入图片描述


一、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官网
    在这里插入图片描述

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

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.4.1</version>
</dependency>

在这里插入图片描述

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

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

跳转到目录
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述
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、首页映射

跳转到目录
在这里插入图片描述

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

跳转到目录

  • 与其他静态资源一样,Spring Boot在配置的静态内容位置中查找 favicon.ico。如果存在这样的文件,它将自动用作应用程序的favicon。
  • 所有的 favicon.ico 都是在静态资源文件下找;
    在这里插入图片描述
    情况浏览器缓存, 刷新即可!
    在这里插入图片描述
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

white camel

感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值