所有的開發之中攔截器一定是一個必須要使用的功能,利用攔截器可以更加有效的實現數據的驗證處理,而且最為幸運的是在SpringBoot之中所使用的攔截器與Spring中的攔截器完全一樣。
基礎攔截器操作:
攔截器是一種AOP操作實現,那么在AOP之中用戶一定不需要去關注攔截器的存在,用戶只需要按照自己已經習慣的處理方式進行代碼的編寫即可。
首先我們先創建一個自定義的攔截器:
public class SysInterceptor extends HandlerInterceptorAdapter { /** * 進入攔截器后首先進入的方法 * 返回false則不再繼續執行 * 返回true則繼續執行 */
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception { System.out.println("我是攔截器:我證明我進來了"); HttpSession session=request.getSession(); User userInfo = (User)session.getAttribute("userInfo"); if(userInfo==null) { System.out.println("我證明用戶沒有登錄"); response.sendRedirect(request.getContextPath()+"/login.html"); return false; } System.out.println("我證明用戶已經登錄"); return true; } /** * 生成視圖時執行,可以用來處理異常,並記錄在日志中 */
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception exception){ //-----------------// } /** - * 生成視圖之前執行,可以修改ModelAndView */
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView arg3) throws Exception{ //----------------------------// } }
接下來我們需要將 SysInterceptor 攔截器添加到SpringBoot的配置中,讓SpringBoot項目有這么一個攔截器存在,我們新創建一個SessionConfiguration,將攔截器的配置以及攔截路徑配置好,如下圖所示:

下面我們來說明一下: "/fileter/**" 的意思:就是說我要攔截所有以 /fileter 開頭的訪問路徑,因為我Controller層 是這樣編寫的(可根據自己需求更改)
1):這是小編訪問登陸頁面的路徑:沒有以 /fileter開頭

2):這是小編訪問主頁面的路徑:以 /fileter 開頭

並且將查到的用戶信息 存儲到了 Session中。
到這里就已經結束。編寫以上的內容,就可以時間基礎的 攔截器。
(加載時機:當我們直接訪問 /fileter/logins 的時候,會先走我們自定義的攔截器。此時從Session中獲取用戶對象信息。若是有信息則是已經登陸了,直接返回 true 通過。否則就 重新跳轉到登陸頁面,返回 False)
若有不足之處:請多多指教...
如要轉載:請注明小編本站地址:(https://www.cnblogs.com/mlq2017/)
