SpringBoot靜態資源訪問+攔截器+Thymeleaf模板引擎實現簡單登陸
在此記錄一下這十幾天的學習情況,卡在模板引擎這裡已經是四天了。 對Springboot的配置有一個比較深刻的認識,在此和大家分享一下初學者入門Spring Boot的注意事項,如果是初學SpringBoot,或者有意向學習Springboot的朋友,這篇文章可以簡單的來幫助你,處理一些不必要的麻煩。
開發環境:
IDea
JDK1.8
SpringBoot2+
Maven3.5
1、配置Maven
首先我們開啟IdeA我們從新建一個專案開始。SpringBoot是基於Maven來管理Jar包的。首先我們需要在Idea中配置我們Maven的本地倉庫位置
這是我本地Maven的安裝目錄,Idea集成了Maven,其實是不用配置的,這裡簡述一下配置Maven的步驟
開啟Maven安裝目錄下 /conf/資料夾下的 settings.xml
這個是Maven的配置檔案,我們可以在其中的 如下.
將上面的預設本地倉庫位置做一個替換,可以從上圖看到我們的本地倉庫位置。 之後我們在專案中,就可以通過Pom.xml將我們需要的JAr 配置到Maven中,並且由Maven來管理我們的Jar包
注意,每次更新Pom檔案的時候,建議重新整理一下當前的Maven專案。
首先我們來配置自己的本地倉庫 ,我們在Idea的主介面開啟設定
注意,如果是在專案頁面進行設定的話生效的是當前的專案,如果是在Idea主介面進行設定的話,那麼生效的是整個IDea
我們在搜尋框中輸入Maven然後出現以下介面,找到自己的Maven的安裝目錄
並且指定自己的Maven配置檔案
然後我們建立一個SpringBoot的專案,幸運的是,SpringBoot支援快速構建Maven專案我們
注意:這一步需要聯網來下載元件!
我們可以在如下的介面選擇我們專案需要引入的元件,並且來引入需要的Start
我們這裡選用的tymeleaf的模板引擎和 Web的支援
專案骨架:
靜態資源訪問的問題,SpringBoot自動將 如下幾個資料夾作為整個專案的靜態資原始檔夾優先順序自高至低如下
"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"
"/":當前專案的根路徑
我們將準備好的圖片分別放到如上幾個資料夾上,用來測試訪問路徑優先順序:
同時:我們通過檢視 SpringBoot 自動配置中的 Thymeleaf原始碼得知以下:
解析字首以及字尾和預設路徑,同時,檔名為Index.html的檔案預設被識別為當前專案的主頁:
區別於Jsp的不同是 Thymeleaf使用.html字尾的頁面來進行展示,我們需要在頁面上引入thymeleaf的名稱空間
xmlns:th="http://www.thymeleaf.org"你不引入也是可以的但是沒有快捷提示!
我們在頁面上 添加了一個Img 同時啟動SpringBoot
啟動成功:
可以看到圖片可以正常的訪問,同時Thymeleaf解析的就是我們類路徑下的 templates資料夾,同時為index.html的頁面會被解析為首頁。
篇幅有限,這裡僅對SpringBoot靜態資源有一個簡單的介紹,有興趣的小夥伴可以將圖片路徑做個更改一一嘗試。
並且這裡有一點需要注意的是,在是同thymeleaf引入資源的時候不需要加 當前靜態資原始檔夾的名字,例如
如上簡單的頁面訪問我們已經搞定了,現在解決一下 攔截器和拓展Spring Boot配置時 靜態資源失效的問題
首先我們先建立一個自定義的攔截器,注意,是在SpringBoot啟動類同級別的目錄下建立的,這裡牽扯了一個SpringBoot的自動裝配原理,預設掃描了SpringBoot啟動類同級別的檔案和其子包,感興趣的同學可以去看一下SpringBoot的自動裝配原理。
然後我們在自定義的攔截器中使用日誌來記錄,這裡是使用了slf4J和其實現logbak
層次圖如下
想讓我們的自定義攔截器生效,還不行,我們需要寫一個自定義配置類來完成我們的操作 如下圖,有兩種方式來幫助我們拓展配置,注意,這是在SpringBoot2.0之後 廢棄了原有的 WebMvcConfigurerAdapter
這裡選用的是第一種方法,同時對攔截器進行配置攔截所有資源測試日誌輸出。 同時還可以對不需要攔截的資源做排除,注意下這個形參的引數型別。可以傳入陣列
之後便是對攔截器的測試:
我們在瀏覽器訪問預設埠後 發現頁面 404 觀看控制檯後發現 攔截器生效 ,即日誌已經列印。
那麼我們的Index首頁去哪了呢?
我們首先看一下訪問不到的頁面:
後來我們知道是攔截器在作怪,我們新增一個檢視對映就可以解決找不到主頁的問題了:
成功訪問:
成功訪問,這次的心得就分享到這裡了,希望能幫到大家,一定要注意上面我說到的知識點,如果對哪一個知識點不熟悉的話,一定要多查資料,多思考,想想為什麼這麼做,
今天也正好是大家初一,給大家拜個年,新年快樂。祝大家在新的一年裡,編譯一遍過,執行無Bug,最後有一句話送給大家:不積跬步,無以至千里
Java交流群 682677231