- 一、SpringBoot Web开发探究
- 二、SpringBoot静态资源的处理
- 静态资源的映射规则
- 1、第一种静态资源映射规则(webjars)
- 2、第二种静态资源映射规则
- 3、首页映射
- 4、网站图标映射
跳转到目录
- 使用SpringBoot的步骤:
-
创建一个SpringBoot应用,选择我们需要的
模块
,SpringBoot就会默认将我们的需要的模块自动配置
好。 -
SpringBoot已经默认将这些
场景
配置好了,只需要在配置文件中指定少量配置就可以运行起来 -
专注编写业务代码,不需要考虑以前那样一大堆的配置了。
- 比如SpringBoot到底帮我们配置了什么?我们能不能修改?我们能修改哪些配置?我们能不能扩展?
- 向容器中自动配置组件 :
XxxAutoconfiguration
- 自动配置类,封装配置文件的内容:
XxxProperties
跳转到目录
静态资源的映射规则跳转到目录 首先,我们搭建一个普通的SpringBoot项目,回顾一下HelloWorld程序!!
-
写请求非常简单,那我们要引入我们前端资源,我们项目中有许多的
静态资源
,比如css
,js
等文件,这个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依赖即可!
org.webjars
jquery
3.4.1
访问:只要是静态资源,SpringBoot就会去对应的路径寻找资源,我们这里访问地址对应就是:http://localhost:8080/webjars/jquery/3.4.1/jquery.js
跳转到目录
- 那我们项目中要是使用自己的静态资源该怎么导入呢?我们看下一行代码;
- 我们去找
staticPathPattern
在WebMvcProperties
发现第二种映射规则 :/**
, 访问当前的项目任意资源,它会去找resourceProperties
这个类,我们可以点进去看一下分析:
ResourceProperties 可以设置和我们
静态资源
有关的参数;这里面指向了它会去寻找资源的文件夹,即上面数组的内容。 所以得出结论,以下四个目录
存放的静态资源可以被我们识别:
localhost:8080/abc ---> 去静态资源文件夹里面找abc
跳转到目录
- 欢迎页,静态资源文件夹下的所有 index.html 页面;被
/**
映射。 - 比如我访问
http://localhost:8080/
,就会找静态资源文件夹下的index.html
新建一个 index.html - 在我们上面的
3个目录
()中任意一个;然后访问测试 http://localhost:8080/ 看结果!
跳转到目录
- 与其他静态资源一样,Spring Boot在配置的
静态内容
位置中查找 favicon.ico。如果存在这样的文件,它将自动用作应用程序的favicon。 - 所有的
favicon.ico
都是在静态资源文件下找;情况浏览器缓存, 刷新即可!