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 class="org.vipcpi.interceprot.someInterceptor"/> </mvc:interceptor></mvc:interceptors>
總結
以上就是本文關于Spring攔截器HandlerInterceptor接口代碼解析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
新聞熱點
疑難解答
圖片精選