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相关推荐

  1. springboot10 Web开发静态资源

    10.Web开发静态资源处理 接下来呢,开始学习SpringBoot与Web开发,其实SpringBoot的东西用起来非常简单,因为SpringBoot最大的特点就是自动装配. 使用SpringBoo ...

  2. Springboot的web开发-静态资源

    1.web开发简介 SpringMVC自动配置概览 Spring Boot provides auto-configuration for Spring MVC that works well wit ...

  3. 2012年度最新免费web开发设计资源荟萃

    为什么80%的码农都做不了架构师?>>>    日期:2012-9-11  来源:GBin1.com 免费的设计和开发资源大家肯定都喜欢,在这篇文章中我们收集了7月到8月的最新免费开 ...

  4. 金旭亮博客之“Web开发技术”资源主页

    金旭亮博客之"Web开发技术"资源主页 2010年3月28日 发表<Silverlight应用程序的本地通讯 > 2010年3月8日,发表<Silverlight ...

  5. 【coolshell】开源中最好的Web开发的资源

    原文链接:http://coolshell.cn/articles/4795.html 文章来源:Best "must know" open sources to build th ...

  6. 【转载】开源中最好的Web开发的资源

    原文地址:http://bbs.51osos.com/thread-3275-1-1.html 文章来源:Best "must know" open sources to buil ...

  7. 开源中最好的Web开发的资源 ——来自CoolShell.cn

    摘自: http://coolshell.cn/articles/4795.html 文章来源: Best "must know" open sources to build th ...

  8. springboot-web开发(静态资源)

    根据官方文档spring文档,静态资源放在这些路径下,我们就可以直接访问到静态资源. 我们就可以直接访问suolong.jpg,namei.jpg 当我们访问lufei.jpg时, 因为控制器cont ...

  9. web中静态资源和动态资源的概念及区别

    1.静态资源和动态资源的概念 简单来说: 静态资源:一般客户端发送请求到web服务器,web服务器从内存在取到相应的文件,返回给客户端,客户端解析并渲染显示出来. 动态资源:一般客户端请求的动态资源, ...

最新文章

  1. 小程序生命周期_来,简单说说小程序的生命周期?
  2. Ether-channel 以太网通道
  3. 如何识别和避免间谍软件
  4. iOS 使用FFmpeg实现视频H264编码
  5. 用 gdb 调试 GCC 程序
  6. Linux上使用shell脚本查看内存情况(超实用)
  7. Active Noise Cancelling-主动噪声消除
  8. C语言三路基数快排multikey quick sort算法(附完整源码)
  9. 【Linux】一步一步学Linux——alias命令(205)
  10. 将手机网站做成手机应用的JS框架
  11. 定时任务的并发_03
  12. 高并发高可用的 架构实践
  13. python——Web服务开发(一)Flask模块
  14. python paramiko并发_Python之paramiko
  15. C语言入门学习(入门级C语言)
  16. 深入理解DRM(三)——MediaDRM和MediaCrypto
  17. 服务器虚拟化集群部署
  18. python把工作簿拆分为工作表_使用Python和Pandas将Excel工作表拆分为单独的工作表...
  19. 【现代密码学原理】——消息认证码(学习笔记)
  20. web前端利用leaflet生成粒子风场,类似windy

热门文章

  1. 追债之旅(Dijkstra最短路)
  2. P2766 最长不下降子序列问题(网络流)
  3. 【UOJ207】共价大爷游长沙【LCT】【异或】【随机化】
  4. 【CF1204D】Kirk and a Binary String【结论题】【LIS】
  5. CF1067E Random Forest Rank(树形dp,概率与期望,线性代数)
  6. Acwing 273. 分级
  7. Acwing 232. 守卫者的挑战
  8. 周末狂欢赛1(玩游戏/Game,函数,JOIOI王国)
  9. 8.14 模拟:字符串
  10. P7516-[省选联考2021A/B卷]图函数【bfs】