Spring的HandlerMapping支持攔截器,攔截器必須實現HandlerInterceptor接口,此接口里面有下面3中方法:
1.preHandle()處理器執行前被調用,方法返回true標識繼續調用其他攔截器或者處理器,返回false表示中斷流程,后續的攔截器和處理器不再執行。
2.postHandle()處理器執行后,視圖執行前調用,此時而已通過ModelAndView對象對數據模型數據進行處理或對視圖進行處理。
3.afterCompletion()整個過程結束后調用,比如性能監控中我們在這里可以記錄結束時間并輸出消耗的時間,也可以在這里寫對資源的清理,但是只有preHandle()返回true時才會執行afterCompletion方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class someInterceptor implements HandlerInterceptor{ public boolean preHandle(HttpServletRequest req,HttpServletResponse resp,Object handler) throws Exception{ //TODO 處理器執行前被調用 return true ; } publilc void postHandle(HttpServletRequest req,HttpServletResponse resp,Object handler,ModelAndView mv) throws Exception{ //TODO 處理器執行后被調用 } public void afterCompletion(HttpServletRequest req,HttpServletResponse resp,Object handler,Exception e) throws Exception{ //TODO全部執行完成后調用 } } |
這個自定義的攔截器實現HandlerInterceptor接口就要實現接口里所有的方法,如果只想使用某一種方法,可以繼承HandlerInterceptorAdapter.
攔截器的配置
1
2
3
4
5
6
7
|
< mvc:interceptors > < mvc:interceptor > < mvc:mapping path = "/org/*" /> < mvc:exclude-mapping path = "/login/*" /> < bean class = "org.vipcpi.interceprot.someInterceptor" /> </ mvc:interceptor > </ mvc:interceptors > |
總結
以上就是本文關于Spring攔截器HandlerInterceptor接口代碼解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
原文鏈接:http://blog.csdn.net/sinat_15274667/article/details/51585540