Spring的HandlerMapping支持攔截器,攔截器必須實現HandlerInterceptor接口,此接口裡面有下面3中方法:
1.preHandle()處理器執行前被調用,方法返回true標識繼續調用其他攔截器或者處理器,返回false表示中斷流程,後續的攔截器和處理器不再執行。
2.postHandle()處理器執行後,視圖執行前調用,此時而已通過ModelAndView對像對數據模型數據進行處理或對視圖進行處理。
3.afterCompletion()整個過程結束後調用,比如性能監控中我們在這裡可以記錄結束時間並輸出消耗的時間,也可以在這裡寫對資源的清理,但是只有preHandle()返回true時才會執行afterCompletion方法。
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.
攔截器的配置
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/org/*"/> <mvc:exclude-mapping path="/login/*"/> <bean/> </mvc:interceptor></mvc:interceptors>
總結
以上就是本文關於Spring攔截器HandlerInterceptor接口代碼解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!