攔截器
實現強制登錄的功能, 后端程序根據Session來判斷??是否登錄, 但是實現?法是?較?煩的
需要修改每個接?的處理邏輯
需要修改每個接?的返回結果
接?定義修改, 前端代碼也需要跟著修改
有沒有更簡單的辦法, 統?攔截所有的請求, 并進?Session校驗呢, 這?我們學習?種新的解決辦法: 攔截器
攔截器快速入門
什么是攔截器?
攔截器是Spring框架提供的核?功能之?, 主要?來攔截??的請求, 在指定?法前后, 根據業務需要執行預先設定的代碼.
也就是說, 允許開發?員提前預定義?些邏輯, 在??的請求響應前后執?. 也可以在??請求前阻?其執?.
在攔截器當中,開發?員可以在應?程序中做?些通?性的操作, ?如通過攔截器來攔截前端發來的請求, 判斷Session中是否有登錄??的信息. 如果有就可以放?, 如果沒有就進?攔截.
?如我們去銀?辦理業務, 在辦理業務前后, 就可以加?些攔截操作
辦理業務之前, 先取號, 如果帶?份證了就取號成功
業務辦理結束, 給業務辦理?員的服務進?評價.
這些就是"攔截器"做的?作.
攔截一般是在目標執行方法之前進行攔截,判斷是否滿足條件,返回true表示不攔截,返回false代表攔截。
而視圖渲染部分現在基本已經不用了,不需要關注。
之前只是設置了攔截的條件和處理方法,實現WebMvcConfigurer接口的addInterceptors時定義要攔截哪些請求,并且調用之前定義的攔截方法。
需要注意的是,這個定義攔截請求需要將這個類交給spring保管,不然是不起效的。
攔截器詳解
攔截路徑
攔截器執?流程



登錄校驗
了解攔截器的基本操作之后,接下來需要完成最后?步操作:通過攔截器來完成圖書管理系統中的登錄校驗功能
定義攔截器
從session中獲取??信息, 如果session中不存在, 則返回false,并設置http狀態碼為401, 否則返回true

這里檢查了用戶的cookie是否攜帶了需要的sessionid,以及對應的保存在服務器當中的session之中是否保存了需要的數據,如果有就允許訪問,沒有的話就需要設置狀態碼。需要注意的是,這些是serverlet的操作,如果要填充數據的話,需要手動修改數據格式等操作。

注冊配置攔截器
統一數據返回格式
通過來實現該接口的方法,來完成對返回數據的統一處理
存在問題
?多測試?種不同的返回結果, 發現只有返回結果為String類型時才有這種錯誤發?.
解決?案
再次測試就正確了
不過還需要做一些小修改
優點
統一異常處理?


匹配的規則是從子類開始向上匹配,最后才會匹配到Exception。
參數就是異常類型的匹配。
也可以在@ExceptionHandler("異常類型")這樣來標注匹配的異常類。
當有多個異常通知時,匹配順序為當前類及其?類向上依次匹配