九、Spring中的攔截器:
Spring爲我們提供了:
org.springframework.web.servlet.HandlerInterceptor接口,
org.springframework.web.servlet.handler.HandlerInterceptorAdapter適配器,
實現這個接口或繼承此類,可以非常方便的實現自己的攔截器。
有以下三個方法:
Action之前執行:
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler);
生成視圖之前執行
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView);
最後執行,可用於釋放資源
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
分別實現預處理、後處理(調用了Service並返回ModelAndView,但未進行頁面渲染)、返回處理(已經渲染了頁面)
在preHandle中,可以進行編碼、安全控制等處理;
在postHandle中,有機會修改ModelAndView;
在afterCompletion中,可以根據ex是否爲null判斷是否發生了異常,進行日誌記錄。
參數中的Object handler是下一個攔截器。