Web开发静态资源处理---SpringBoot
Web开发静态资源处理
使用SpringBoot的步骤:
1、创建一个SpringBoot应用,选择我们需要的模块,SpringBoot就会默认将我们的需要的模块自动配置好
2、手动在配置文件中配置部分配置项目就可以运行起来了
3、专注编写业务代码,不需要考虑以前那样一大堆的配置了。
要熟悉掌握开发,之前学习的自动配置的原理一定要搞明白!
比如SpringBoot到底帮我们配置了什么?我们能不能修改?我们能修改哪些配置?我们能不能扩展?
- 向容器中自动配置组件 :*** Autoconfiguration
- 自动配置类,封装配置文件的内容:***Properties
没事就找找类,看看自动装配原理!
第一种静态资源映射规则
首先,我们搭建一个普通的SpringBoot项目,回顾一下HelloWorld程序!
写请求非常简单,那我们要引入我们前端资源,我们项目中有许多的静态资源,比如css,js等文件,这个SpringBoot怎么处理呢?
如果我们是一个web应用,我们的main下会有一个webapp,我们以前都是将所有的页面导在这里面的,对吧!但是我们现在的pom呢,打包方式是为jar的方式,那么这种方式SpringBoot能不能来给我们写页面呢?当然是可以的,但是SpringBoot对于静态资源放置的位置,是有规定的!
我们先来聊聊这个静态资源映射规则:
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包的方式引入我们的静态资源 , 我们以前要导入一个静态资源文件,直接导入即可。
使用SpringBoot需要使用Webjars,我们可以去搜索一下:
网站:https://www.webjars.org
要使用jQuery,我们只要要引入jQuery对应版本的pom依赖即可!
<dependency><groupId>org.webjars</groupId><artifactId>jquery</artifactId><version>3.5.1</version></dependency>
导入完毕,查看webjars目录结构,并访问Jquery.js文件!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MeVua5FK-1610005795544)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210107152253069.png)]
第二种静态资源映射规则
那我们项目中要是使用自己的静态资源该怎么导入呢?我们看下一行代码;
我们去找staticPathPattern发现第二种映射规则 :/** , 访问当前的项目任意资源,它会去找 resourceProperties 这个类,我们可以点进去看一下分析:
// 进入方法
public String[] getStaticLocations() { return this.staticLocations;}
// 找到对应的值
private String[] staticLocations = CLASSPATH_RESOURCE_LOCATIONS;
// 找到路径
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" };
ResourceProperties 可以设置和我们静态资源有关的参数;这里面指向了它会去寻找资源的文件夹,即上面数组的内容。
所以得出结论,以下四个目录存放的静态资源可以被我们识别:
"classpath:/META-INF/resources/""classpath:/resources/""classpath:/static/""classpath:/public/"
优先级
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bm1onWjE-1610005795546)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210107154153523.png)]
我们可以在resources根目录下新建对应的文件夹,都可以存放我们的静态文件;
比如我们访问 http://localhost:8080/1.js , 他就会去这些文件夹中寻找对应的静态资源文件;
Web开发静态资源处理---SpringBoot相关推荐
- springboot10 Web开发静态资源
10.Web开发静态资源处理 接下来呢,开始学习SpringBoot与Web开发,其实SpringBoot的东西用起来非常简单,因为SpringBoot最大的特点就是自动装配. 使用SpringBoo ...
- Springboot的web开发-静态资源
1.web开发简介 SpringMVC自动配置概览 Spring Boot provides auto-configuration for Spring MVC that works well wit ...
- 2012年度最新免费web开发设计资源荟萃
为什么80%的码农都做不了架构师?>>> 日期:2012-9-11 来源:GBin1.com 免费的设计和开发资源大家肯定都喜欢,在这篇文章中我们收集了7月到8月的最新免费开 ...
- 金旭亮博客之“Web开发技术”资源主页
金旭亮博客之"Web开发技术"资源主页 2010年3月28日 发表<Silverlight应用程序的本地通讯 > 2010年3月8日,发表<Silverlight ...
- 【coolshell】开源中最好的Web开发的资源
原文链接:http://coolshell.cn/articles/4795.html 文章来源:Best "must know" open sources to build th ...
- 【转载】开源中最好的Web开发的资源
原文地址:http://bbs.51osos.com/thread-3275-1-1.html 文章来源:Best "must know" open sources to buil ...
- 开源中最好的Web开发的资源 ——来自CoolShell.cn
摘自: http://coolshell.cn/articles/4795.html 文章来源: Best "must know" open sources to build th ...
- springboot-web开发(静态资源)
根据官方文档spring文档,静态资源放在这些路径下,我们就可以直接访问到静态资源. 我们就可以直接访问suolong.jpg,namei.jpg 当我们访问lufei.jpg时, 因为控制器cont ...
- web中静态资源和动态资源的概念及区别
1.静态资源和动态资源的概念 简单来说: 静态资源:一般客户端发送请求到web服务器,web服务器从内存在取到相应的文件,返回给客户端,客户端解析并渲染显示出来. 动态资源:一般客户端请求的动态资源, ...
最新文章
- 小程序生命周期_来,简单说说小程序的生命周期?
- Ether-channel 以太网通道
- 如何识别和避免间谍软件
- iOS 使用FFmpeg实现视频H264编码
- 用 gdb 调试 GCC 程序
- Linux上使用shell脚本查看内存情况(超实用)
- Active Noise Cancelling-主动噪声消除
- C语言三路基数快排multikey quick sort算法(附完整源码)
- 【Linux】一步一步学Linux——alias命令(205)
- 将手机网站做成手机应用的JS框架
- 定时任务的并发_03
- 高并发高可用的 架构实践
- python——Web服务开发(一)Flask模块
- python paramiko并发_Python之paramiko
- C语言入门学习(入门级C语言)
- 深入理解DRM(三)——MediaDRM和MediaCrypto
- 服务器虚拟化集群部署
- python把工作簿拆分为工作表_使用Python和Pandas将Excel工作表拆分为单独的工作表...
- 【现代密码学原理】——消息认证码(学习笔记)
- web前端利用leaflet生成粒子风场,类似windy
热门文章
- 追债之旅(Dijkstra最短路)
- P2766 最长不下降子序列问题(网络流)
- 【UOJ207】共价大爷游长沙【LCT】【异或】【随机化】
- 【CF1204D】Kirk and a Binary String【结论题】【LIS】
- CF1067E Random Forest Rank(树形dp,概率与期望,线性代数)
- Acwing 273. 分级
- Acwing 232. 守卫者的挑战
- 周末狂欢赛1(玩游戏/Game,函数,JOIOI王国)
- 8.14 模拟:字符串
- P7516-[省选联考2021A/B卷]图函数【bfs】