第六章:如何在SpringBoot項目中使用攔截器

攔截器對使用SpringMvc、Struts的開發人員來講特別熟悉,由於你只要想去作好一個項目必然會用到它。攔截器在咱們平時的項目中用處有不少,如:日誌記錄(咱們後續章節會講到)、用戶登陸狀態攔截、安全攔截等等。而SpringBoot內部集成的是SpringMVC控制框架,因此使用起來跟SpringMVC沒有區別,只是在配置上有點不一樣。廢話很少說,咱們開始咱們本章的內容!git

本章目標

學習使用SpringBoot中是如何配置攔截器,使用攔截器來完成簡單的用戶登陸狀態斷定。web

構建項目

咱們建立一個名字叫作Chapter6的SpringBoot項目,添加以下maven依賴:Web、MySQL、JPA、Druid等。複製上一章配置文件application.yml到本章對應目錄下,具體項目結構以下圖1所示:spring


圖1

咱們的application.yml文件內容須要修改添加JSP的支持,另外若是你下載後放到你本地的項目時,須要將數據庫的地址以及用戶名,密碼修改爲對應本身的配置信息。添加JSP路徑配置支持以下圖2所示:數據庫


圖2

InteiiJ IDEA工具爲咱們建立的SpringBoot項目是不存在webapp、WEB-INF結構目錄的,咱們須要自行添加,以下圖3所示:安全


圖3

能夠看到上述圖3咱們對應的建立了jsp目錄,接下來咱們分別建立名字叫作,index.jsp,login.jsp的JSP頁面文件,index.jsp內填寫「你已成功訪問到主頁面!」,login.jsp建立一個登陸表單,輸入一個用戶名、密碼字段,具體內容以下圖四、圖5所示:session


圖4

圖5

配置控制器

上述JSP文件已經建立完成,下面咱們須要讓SpringBoot內置SpringMVC控制器轉發到對應的JSP頁面,咱們建立名叫LoginController的類文件,而且加入登陸用戶的方法,以下圖6所示:app


圖6

下面咱們配置用戶從數據庫中讀取,由於以前的表沒有「密碼」字段咱們下圖在以前的表內添加一個密碼字段以下圖7所示:框架


圖7

表結構已經修改,咱們根據表結構建立對應的實體,根據實體類直接建立SpringDataJPA的管理接口,SpringDataJPA的具體講解我留到下面的章節給你們好好的梳理梳理,本章先使用最簡單的部分查詢功能。我下面直接貼對應的實體類代碼以及JPA代碼,以下圖八、圖9所示:webapp


圖8



圖9

用戶的實體以及JPA配置完成後咱們再次打開LoginController,將UserJPA使用SpringBean的形式注入,而後完成簡單的登陸邏輯,以下圖10所示:jsp


圖10

上圖10能夠看到咱們使用SpringDataJPA從數據庫中查詢指定用戶,而後再比對密碼是否符合,我再次修改LoginController在登陸成功的地方,添加將用戶寫入session中。以下圖11所示:


圖11

到如今咱們尚未編寫有關攔截器的相關內容,上述都是地基,咱們接下來開始蓋樓。

建立攔截器

在建立攔截器以前咱們須要添加初始化登陸頁面的轉發配置,咱們建立IndexController添加初始化登陸、首頁頁面轉發配置,以下圖12所示:


圖12

完成上述操做後,建立一個名叫作SessionInterceptor的攔截器實體類,實現SpringMVC內部接口HandlerInterceptor,而且添加若是沒有session狀態直接跳轉到/user/login_view地址也就是咱們對應的login.jsp頁面,攔截器配置以下圖13所示:


圖13

接下來咱們須要將SessionInterceptor攔截器添加到SpringBoot的配置中,讓SpringBoot項目有這麼一個攔截器存在,咱們新建立一個SessionConfiguration,將攔截器的配置以及攔截路徑配置好,以下圖14所示:


圖14

好了,咱們的全部工做都已經作好,下面咱們來初嘗試運行項目,看看有沒有什麼問題

初嘗試運行

咱們觀察InteiilJ IDEA工具的控制檯的日誌以下圖15所示,證實你的項目啓動沒有問題,那麼咱們先來訪問首頁地址嘗試登陸地址:127.0.0.1:8080/user/index,咱們發現了一個意向不到的結果,以下圖15所示:


圖15

爲何會出現這個問題呢?咱們已經排除了/user/login以及/user/login_view請求地址爲何還會出現這個問題呢?遇到這個問題咱們能夠去SessionInterceptor內打印request.getRequestURI()看看輸出的地址,以下圖16所示:


圖16

咱們發現不單單有/user/login_view,還存在一個/error頁面,爲何出現這個呢?這時才恍然大悟,咱們在pom.xml配置文件中並無配置JSP的支持,咱們打開pom.xml配置文件將jsp以及servlet的依賴添加進去,以下圖17所示:


圖17

完成依賴添加後,重啓項目,再次訪問127.0.0.1:8080/user/index,如今顯示是沒有問題了,咱們沒有登陸直接訪問index.jsp,固然會被攔截器攔截,攔截後直接跳轉到登陸頁面(login.jsp),以下圖18所示效果:


圖18

咱們如今輸入數據庫內存在的用戶名:admin,密碼:123456的測試用戶進行登陸,效果以下圖19所示:


圖19

顯示咱們已經登陸成功,也就是說咱們的登陸用戶消息已經存放到session內,那麼咱們來訪問127.0.0.1:8080/user/index地址進行驗證,以下圖20所示:


圖20

能夠看到圖20效果,咱們能夠訪問到了index.jsp頁面的內容了,咱們的攔截器完美的完成的攔截使命。

總結

上述內容是本章的所有講解內容,本章主要內容講解SpringBoot項目是若是配置攔截器,而且實現簡單的用戶登陸狀態驗證攔截實例。

本章代碼已經上傳到碼雲:

SpringBoot配套源碼地址:gitee.com/hengboy/spr…

SpringCloud配套源碼地址:gitee.com/hengboy/spr…

SpringBoot相關係列文章請訪問:目錄:SpringBoot學習目錄

QueryDSL相關係列文章請訪問:QueryDSL通用查詢框架學習目錄

SpringDataJPA相關係列文章請訪問:目錄:SpringDataJPA學習目錄

SpringBoot相關文章請訪問:目錄:SpringBoot學習目錄,感謝閱讀!

歡迎加入QQ技術交流羣,共同進步。


QQ技術交流羣
相關文章
相關標籤/搜索