日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Web开发静态资源处理---SpringBoot

發(fā)布時(shí)間:2023/12/3 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web开发静态资源处理---SpringBoot 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Web開發(fā)靜態(tài)資源處理

使用SpringBoot的步驟:

1、創(chuàng)建一個(gè)SpringBoot應(yīng)用,選擇我們需要的模塊,SpringBoot就會(huì)默認(rèn)將我們的需要的模塊自動(dòng)配置好

2、手動(dòng)在配置文件中配置部分配置項(xiàng)目就可以運(yùn)行起來了

3、專注編寫業(yè)務(wù)代碼,不需要考慮以前那樣一大堆的配置了。

要熟悉掌握開發(fā),之前學(xué)習(xí)的自動(dòng)配置的原理一定要搞明白!

比如SpringBoot到底幫我們配置了什么?我們能不能修改?我們能修改哪些配置?我們能不能擴(kuò)展?

  • 向容器中自動(dòng)配置組件 :*** Autoconfiguration
  • 自動(dòng)配置類,封裝配置文件的內(nèi)容:***Properties

沒事就找找類,看看自動(dòng)裝配原理!

第一種靜態(tài)資源映射規(guī)則

首先,我們搭建一個(gè)普通的SpringBoot項(xiàng)目,回顧一下HelloWorld程序!

寫請(qǐng)求非常簡單,那我們要引入我們前端資源,我們項(xiàng)目中有許多的靜態(tài)資源,比如css,js等文件,這個(gè)SpringBoot怎么處理呢?

如果我們是一個(gè)web應(yīng)用,我們的main下會(huì)有一個(gè)webapp,我們以前都是將所有的頁面導(dǎo)在這里面的,對(duì)吧!但是我們現(xiàn)在的pom呢,打包方式是為jar的方式,那么這種方式SpringBoot能不能來給我們寫頁面呢?當(dāng)然是可以的,但是SpringBoot對(duì)于靜態(tài)資源放置的位置,是有規(guī)定的!

我們先來聊聊這個(gè)靜態(tài)資源映射規(guī)則:

SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfiguration 這個(gè)配置類里面;

我們可以去看看 WebMvcAutoConfigurationAdapter 中有很多配置方法;

有一個(gè)方法:addResourceHandlers 添加資源處理

@Override public void addResourceHandlers(ResourceHandlerRegistry registry) {if (!this.resourceProperties.isAddMappings()) {// 已禁用默認(rèn)資源處理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));}// 靜態(tài)資源配置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/ 找對(duì)應(yīng)的資源;

webjars

Webjars本質(zhì)就是以jar包的方式引入我們的靜態(tài)資源 , 我們以前要導(dǎo)入一個(gè)靜態(tài)資源文件,直接導(dǎo)入即可。

使用SpringBoot需要使用Webjars,我們可以去搜索一下:

網(wǎng)站:https://www.webjars.org

要使用jQuery,我們只要要引入jQuery對(duì)應(yīng)版本的pom依賴即可!

<dependency><groupId>org.webjars</groupId><artifactId>jquery</artifactId><version>3.5.1</version></dependency>

導(dǎo)入完畢,查看webjars目錄結(jié)構(gòu),并訪問Jquery.js文件!

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-MeVua5FK-1610005795544)(C:\Users\王東梁\AppData\Roaming\Typora\typora-user-images\image-20210107152253069.png)]

第二種靜態(tài)資源映射規(guī)則

那我們項(xiàng)目中要是使用自己的靜態(tài)資源該怎么導(dǎo)入呢?我們看下一行代碼;

我們?nèi)フ襰taticPathPattern發(fā)現(xiàn)第二種映射規(guī)則 :/** , 訪問當(dāng)前的項(xiàng)目任意資源,它會(huì)去找 resourceProperties 這個(gè)類,我們可以點(diǎn)進(jìn)去看一下分析:

// 進(jìn)入方法 public String[] getStaticLocations() { return this.staticLocations;} // 找到對(duì)應(yīng)的值 private String[] staticLocations = CLASSPATH_RESOURCE_LOCATIONS; // 找到路徑 private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" };

ResourceProperties 可以設(shè)置和我們靜態(tài)資源有關(guān)的參數(shù);這里面指向了它會(huì)去尋找資源的文件夾,即上面數(shù)組的內(nèi)容。

所以得出結(jié)論,以下四個(gè)目錄存放的靜態(tài)資源可以被我們識(shí)別:

"classpath:/META-INF/resources/""classpath:/resources/""classpath:/static/""classpath:/public/"

優(yōu)先級(jí)

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-bm1onWjE-1610005795546)(C:\Users\王東梁\AppData\Roaming\Typora\typora-user-images\image-20210107154153523.png)]

我們可以在resources根目錄下新建對(duì)應(yīng)的文件夾,都可以存放我們的靜態(tài)文件;

比如我們訪問 http://localhost:8080/1.js , 他就會(huì)去這些文件夾中尋找對(duì)應(yīng)的靜態(tài)資源文件;

總結(jié)

以上是生活随笔為你收集整理的Web开发静态资源处理---SpringBoot的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。