javascript
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: r7000p怎么看配置?
- 下一篇: Thymeleaf模板引擎---Spri