#HandlerInterceptor簡介
攔截器我想大家都並不陌生,最常用的登錄攔截、或是權限校驗、或是防重複提交、或是根據業務像12306去校驗購票時間,總之可以去做很多的事情。
定義一個Interceptor 非常簡單方式也有幾種,我這裏簡單列舉兩種
1、類要實現Spring 的HandlerInterceptor 接口
2、類繼承實現了HandlerInterceptor 接口的類,例如 已經提供的實現了HandlerInterceptor 接口的抽象類HandlerInterceptorAdapter
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception;
void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws Exception;
void afterCompletion(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception;
preHandle:在業務處理器處理請求之前被調用。預處理,可以進行編碼、安全控制、權限校驗等處理;
postHandle:在業務處理器處理請求執行完成後,生成視圖之前執行。後處理(調用了Service並返回ModelAndView,但未進行頁面渲染),有機會修改ModelAndView (這個博主就基本不怎麼用了);
afterCompletion:在DispatcherServlet完全處理完請求後被調用,可用於清理資源等。返回處理(已經渲染了頁面);