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
SpringBoot靜態資源訪問+攔截器+Thymeleaf模板引擎實現簡單登陸