本篇文章就來講講攔截器,springboot中攔截器的注冊還是比較方便的。大概下面兩個步驟:
1.實現HandlerInterceptor接口創建攔截器
2.實現WebMvcConfigurer接口配置攔截器
下面使用一個簡單的例子,來大概展示一下具體使用:
場景:兩個頁面,登錄頁面可以隨便訪問,但是首頁只有xiongda用戶輸入正確密碼才能訪問
第一步,創建攔截器
public class MyInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("==========jin ru pre handle ===="); String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println(username +","+password); if("xiongda".equals(username) && "123456".equals(password)) { return true; }else { return false; } } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("================= jin ru after ==============="); } }
第二步,配置攔截器
@Configuration public class WebMvcConfig implements WebMvcConfigurer{ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/static/login.html"); } }
接下來根據具體結果來講解:
上面兩張圖是訪問登錄頁面,登錄頁面在攔截器配置中配置的是排除路徑,可以看到即使放開了,還是會進入prehandle,但是不會執行任何操作
進入首頁的時候,會在prehandle中進行判斷,只有為true的時候才會執行后面的afterCompletion方法
注意點:
1.攔截器中方法的執行順序是 preHandle -> Controller -> postHandle -> afterCompletion
只有preHandle返回true,才會執行后面的方法