從零開始的Spring Boot學習【十二】【處理Web靜態資源】

我們在剛創建Spring Boot項目的時候提到過,因爲內置了tomcat,所以不像一般的動態web項目一樣,在部署到服務器的時候打成war包,然後放進webapps中,但是Spring Boot工程打包默認是jar包,不需要打成war包。

所以說,我們的靜態資源文件要怎麼處理?靜態資源要放在哪一個目錄呢?我們的Spring Boot導入所需的jar包中,有一個jar包的class名字叫做:WebMvcAutoConfiguration,我們找到它的所在目錄,不管在eclipse還是STS的IDEA我們都有一個快速找到jar包的class文件方法,我們按住CTRL+SHIFT+T或者在navigate中找到open type這個選項,然後把我們要找的class類名寫上去,IDEA就會自動幫我們跳轉到jar包的class文件所對應的地方。

我們點進去看一下,我們找到一個方法名字叫做:addResourceHandlers,添加資源處理的意思,通過代碼,可以看出是從webjars添加的,那麼什麼是webjars呢?

我們打開搜索引擎,例如百度,去搜索一下webjars,一般第一個就是官網了,我們點進去。

在下方,我們選擇maven,然後會看到有很多相關的依賴,例如jquery的。如果你使用過ssh,ssm或者單純的動態web項目,你可能知道,要想使用jquery,js等代碼,都需要引入庫文件,例如jquery的就是(例如):jquery-1.10.2.min.js。但是webjars提供了一種方法,我們只需要寫入這個依賴到pom.xml中,我們就不再需要手動添加庫文件了,maven會下載好放到我們的項目中供我們使用。

那麼我們的問題,靜態資源存放在哪個地方?

在這個方法中,我們可以看到,它調用了另一個方法getStaticLocations(),獲取靜態路徑,好的,我們按住CTRL,往更深處去尋找。

可以看到,最終staticLocations指向的是如下的內容:

classpath我在前面已經做了一個詳細的說明,這裏就不多贅述了,如上四個路徑,就是默認存放靜態資源的目錄,Spring Boot會默認掃描這四個地方的靜態資源。值得一提的是,我們在瀏覽器訪問靜態資源的時候,例如html,css等,不管存放在哪一個目錄中,只需要輸入項目根目錄+靜態資源文件名+靜態資源文件名的後綴即可。

像每個網站上的圖標,把favicon.ico文件存放在上述的四個目錄即可。

Spring Boot也有默認的歡迎頁,默認是在這四個目錄中的index.html文件。

上述兩個同樣在WebMvcAutoConfiguration中有說明,感興趣的可以去找一找。

大家有沒有考慮過如果四個文件夾都寫了index.html那麼Spring Boot會默認調用哪一個目錄的index.html呢?

這個問題,就交給你們自己去探索了。

這裏再拓展一下,有默認配置,就肯定有自定義配置,畢竟Spring是一個很強大框架,說是包羅萬象也不爲過。

之前我們的getStaticLocations()方法中,是存在於哪一個對象中的?

我們點進去看一下,找到最根源。

這個對象是這個ResourceProperties類的,我們點進去。

之前講過很多遍了,prefix+屬性名,就可以在配置文件中更改默認的配置了。不懂的童鞋可以翻翻之前的博文。

關注博主,更多精彩哦!

 

上一章:從零開始的Spring Boot學習【十一】【日誌處理】

下一章:從零開始的Spring Boot學習【十三】【模板Thymeleaf(一)】

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章