創建自定義攔截器
- 創建自定義攔截器——SysInterceptor.java
- 繼承HandlerInterceptorAdapter
- 實現prHandle()
SysInterceptor.java源代碼
public class SysInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
return super.preHandle(request, response, handler);
}
}
springmvc-config.xml源代碼
<mvc:interceptors>
<mvc:interceptor >
<mvc:mapping path="/sys/**"/>
<bean class="interceptor.SysInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
以上僅爲代碼示例,並無任何可執行代碼。
下面是對HandlerInterceptor接口中聲明的三個方法的方法說明
- preHandle:預處理回調方法,實現處理器的預處理(如登錄檢查),第三個參數爲響應的處理器(如我們上一章的Controller實現);
- 返回值:true表示繼續流程(如調用下一個攔截器或處理器);
- 返回值:false表示流程中斷(如登錄檢查失敗),不會繼續調用其他的攔截器或處理器,此時我們需要通過response來產生響應;
- postHandle:後處理回調方法,實現處理器的後處理(但在渲染視圖之前),此時我們可以通過modelAndView(模型和視圖對象)對模型數據進行處理或對視圖進行處理,modelAndView也可能爲null。
- afterCompletion:整個請求處理完畢回調方法,即在視圖渲染完畢時回調,如性能監控中我們可以在此記錄結束時間並輸出消耗時間,還可以進行一些資源清理,類似於try-catch-finally中的finally,但僅調用處理器執行鏈中preHandle返回true的攔截器的afterCompletion。