1、牛刀小試1.1 圖片靜態資源的訪問先看官方怎麼說,點選連結,開啟 SpringBoot官方文件 文件中明確指出:/static (or /public or /resources or /META-INF/resources) ,這幾個目
2021-06-24 17:19:46
1、牛刀小試
1.1 圖片靜態資源的訪問
先看官方怎麼說,點選連結,開啟 SpringBoot官方文件
文件中明確指出:/static (or /public or /resources or /META-INF/resources) ,這幾個目錄是SpringBoot放置靜態資源的目錄,只要把靜態資源放到這幾個目錄下,就能直接訪問到。
新建 Spingboot web項目試下,新項目只有 /static 目錄 ,手動創建其他幾個靜態資原始檔夾,每個目錄新增1張圖片
啟動項目,分別訪問這四張圖片:
發現圖片均可訪問,文件說的對,果然沒騙人,由此我們認定 SpringBoot 訪問靜態資源 :當前項目根路徑 + / + 靜態資源名。
1.2 為靜態資源新增訪問字首
文件又解釋了一下,說,預設情況下SpringBoot是幫你對映的路徑是 /** ,
但是,如果你想加一個字首也可以,比如 /res/
技術圈有句話:先有業務才有技術,SpringBoot官方考慮到某些網站添加了登入驗證,一般需要登入後才能訪問項目中的資源,為了登入頁樣式也能正常顯示,方便放行靜態資源,直接給所有靜態資源新增一個字首,既可統一攔截,又可統一放開
操作:在配置檔案application.properties中新增
1.3 WelCome Page 的奇妙跳轉
文件說把一個名稱叫 index.html 的檔案放到任意的靜態目錄下,訪問http://localhost:8080 即可到達,意思就是給你一個首頁跳轉的快捷方式(注意:需把1.2 的配置路徑去掉,否則會導致welcome page功能失效,後面源碼分析會說到)新建html,放到 /static 下,訪問:
2、那麼,SpringBoot是如何做到的呢?
接下來看源碼探究 SpringBoot 靜態資源配置原理 》》》》 gogogo
源碼位置在:spring-boot-autoconfigure-2.5.1.jar 這個jar裡面,具體的目錄如下:
WebMvcAutoConfiguration類裡面找到 addResourceHandlers 方法,顧名思義 新增資源處理器
第一個if判斷 this.resourceProperties.isAddMappings() 去配置檔案獲取
spring.resources 這個屬性,預設是 true , 如果設定為false 那麼就等於禁用掉所有的靜態資源對映功能,不行就試一下
改回 true ,首頁就又可以訪問了
不要停留,繼續看第二個 addResourceHandler 方法,打斷點看看這個方法添加了什麼規則
沒錯,第二個addResourceHandler 方法就表明 / ** 下的所有請求,都在這四個預設的位置去找靜態資源對映,這四個目錄在官方文件中提到過。
另外,訪問路徑字首是在 this.mvcProperties.getStaticPathPattern()獲取的,配置上:
spring.mvc.static-path-pattern=/res/**
打斷點如下:
注意: 所有的請求先去controller控制器找對映,找不到,再來靜態資源對映器。
到這裡解決了靜態資源目錄的問題。
還是在 WebMvcAutoConfiguration 這個類:搜尋 「WelcomePage」 :
把 WelcomePageHandlerMapping 的有參構造也拿來
根據有參構造可以看出來,只有 歡迎頁這個資源存在,並且 靜態資源訪問路徑是 /** ,才能重定向到indes.html ,否則就會去找 Controller 處理。
這就解釋了,上面為什麼配置了靜態資源訪問路徑 為/res/** 後導致首頁無法訪問到 的問題
好了,前面牛刀小試的坑已經填完了,關於SpringBoot 靜態資源配置原理 這篇總結就到這了
如何獲取Java學習資料?
轉發分享此文,後臺私信小編:「 資料 」即可獲取。注意是私信,因為檔案比較大,所以要加好友,免費,不花錢(注:轉發分享,感謝大家)
相關文章
1、牛刀小試1.1 圖片靜態資源的訪問先看官方怎麼說,點選連結,開啟 SpringBoot官方文件 文件中明確指出:/static (or /public or /resources or /META-INF/resources) ,這幾個目
2021-06-24 17:19:46
據天眼查在6月22日的資訊:紫梧桐北京資產管理有限公司即蛋殼公寓所屬公司旗下超42萬元財產將被凍結或查封。此前,該公司不僅被上海閔行區人民法院列為失信被執行人,創始人高婧
2021-06-24 17:18:27
前段時間,昔日手機行業巨頭之一的LG正式宣佈推出智慧手機市場,該訊息令許多人唏噓不已。不過,LG手機業務在結束之前一直在進行新品研發,其中包括原計劃今年推出的驍龍888旗艦。
2021-06-24 17:18:03
華為手機使用者在國內的佔比還是比較高的,畢竟華為在前兩年的市場份額已經接近一半,小宅記得有段時間,國內市場平均每賣出十部智慧手機,就有四部以上是華為手機,這個佔比是非常恐
2021-06-24 16:59:00
1、什麼是 REST 風格首先 RESTful架構,就是目前最流行的一種網際網路軟體架構。它結構清晰、符合標準、易於理解、擴展方便,所以正得到越來越多網站的採用。REST這個詞,是 Roy
2021-06-24 16:57:52
6月初,華為正式釋出了HarmonyOS2作業系統,並公佈了百機升級計劃,最遲在明年上半年,出現在列表上的機型都將能升級鴻蒙OS2系統。不過為了確保使用體驗,很多機型還處於內測狀態,首批
2021-06-24 16:56:22