目录
一、什么是静态资源?
一般客户端发送请求到web服务器,web服务器从内存在取到相应的文件,返回给客户端,客户端解析并渲染显示出来。
例如:css,js等文件。
二、使用静态资源
第一种:使用webjars
SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfiguration 这个配置类里面,默认为我们提供了静态资源处理。
我们进入WebMvcAutoConfigurationAdapter源码里面进行查看,发现有这么一个方法:
addResourceHandlers 添加资源处理;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!this.resourceProperties.isAddMappings()) {
// 已禁用默认资源处理
logger.debug("Default resource handling disabled");
return;
}
// 缓存控制
Duration cachePeriod = this.resourceProperties.getCache().getPeriod();
CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl();
// webjars 配置
if (!registry.hasMappingForPattern("/webjars/**")) {
customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/")
.setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));
}
// 静态资源配置
String staticPathPattern = this.mvcProperties.getStaticPathPattern();
if (!registry.hasMappingForPattern(staticPathPattern)) {
customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern)
.addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations()))
.setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));
}
}
分析:
所有的 /webjars/** , 都需要去 classpath:/META-INF/resources/webjars/ 找对应的资源;
什么是webjars 呢?
Webjars本质就是以jar包的方式引入我们的静态资源 。
使用
当我们需要使用某一个静态资源时,只需要去以下的网站查找相对应的版本,然后将其导入即可。
网站:WebJars - Web Libraries in Jars
例如:
我们现在需要使用jQuery这个静态资源,那么我们前往官网查找。
我们将其对应的Maven依赖复制到pom.xml中
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.4.1</version>
</dependency>
导入完毕后,我们去查看webjars目录结构。
正如上面源码分析知道,所有的 /webjars/** , 都需要去 classpath:/META-INF/resources/webjars/ 找对应的资源;
那么我们现在去访问Jquery.js文件。
注意:只要是静态资源,SpringBoot就会去对应的路径(classpath:/META-INF/resources/webjars/ )寻找资源
浏览器访问:http://localhost:8080/webjars/jquery/3.4.1/jquery.js
访问成功!
第二种:将静态资源文件放至静态资源文件夹
源码:
依旧是在WebMvcAutoConfiguration.class类中,我们进行查看:
那我们点进去看一下这是给我们配置到哪里去了呢?
图片续:
经过一路跟踪,终于找到,springboot为我们自动配置的静态资源位置是如下几个:classpath:/MATA-INF/resources/、classpath:/resources/、classpath:/public/、classpath:/static/这几个位置,无论我们把静态资源放到这几个的哪一个都可以访问到。
也就是说以下四个目录存放的静态资源可以被我们识别:
"classpath:/META-INF/resources/"
"classpath:/resources/"
"classpath:/static/"
"classpath:/public/"
我们可以在resources根目录下新建对应的文件夹,都可以存放我们的静态文件;
例如:
接着我们去访问该静态资源:
http://localhost:8080/hello.js
访问成功!
第三种:自定义静态资源路径
我们可以通过application.properties配置文件来指定一下,哪些文件夹是需要我们放静态资源文件的。
(1)编写配置文件
application.properties:
spring.web.resources.static-locations=classpath:/yixin/,classpath:/king/
我们定义了两个存放静态资源的目录:yixin和king
(2)创建目录
(3)测试
访问成功!!
注意:一旦自己定义了静态文件夹的路径,原来的自动配置就都会失效了!
三、首页处理
我们去查看一下WebMvcAutoConfigurationAdapter的源码,发现有以下方法:
也是就是说当我们启动SpringBoot的时候,去访问http://localhost:8080/,那么就会去找静态资源文件夹下的 index.html。
我们进行测试一下
(1)编写index.html并放在任意的静态资源文件夹中
(2)index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
你好呀,我是一心同学。
</body>
</html>
(3)访问http://localhost:8080/
访问成功!
结语
以上就是一心同学对SpringBoot中Web的静态资源的知识整理,静态资源的访问会在我们进行WEB开发中经常使用的,务必掌握其访问的方法。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2023-01-06 Debian ping: www.baidu.com: Temporary failure in name resolution域名解析出错
2023-01-06 Ubuntu下配置DNS
2023-01-06 Ubuntu 手动配置DNS
2016-01-06 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
2013-01-06 Windows GDI和GDI+区别(实例剖析)
2012-01-06 Javascript脚本的调试工具有哪些
2012-01-06 JavaScript中的function使用方法