springmvc二十九:拦截器
Springmvc提供了攔截器機制; 允許運行目標方法之前進行一些攔截工作,或者目標方法運行之后進行一些其他處理。
Filter(過濾器)是javaweb定義的。
攔截器是springmvc定義的。
?
preHandle: 在目標方法運行之前調用; 返回boolean;?
postHandle:?在目標方法運行之后調用
afterCompletion:在請求整個完成之后;?來到目標頁面之后;資源相應之后;
?
1). 攔截器是一個接口
2). 實現HandlerInterceptor接口
3). 配置攔截器
<!-- 配置攔截器 --> <mvc:interceptors><!-- 默認攔截所有請求 --><bean class="com.atchina.MyFirstInterceptor"></bean> </mvc:interceptors>4). 攔截器的運行流程
??正常運行流程
? ? ?攔截器的preHandle------目標方法------攔截器的postHandle------頁面---------攔截器的afterCompletion
? 其他流程
? ? 1. 只要preHandle不放行就沒有以后的流程。
? ? 2. 只要放行了,?afterCompletion都會執行。
?
?
多個攔截器
? 正常流程
? .MyFirstInterceptor..preHandle...
? .MySecondInterceptor..preHandle...
? ....test01..目標方法...
? .MySecondInterceptor..postHandle...
? .MyFirstInterceptor..postHandle...
? ....success...jsp...
? .MySecondInterceptor..afterCompletion...
? .MyFirstInterceptor..afterCompletion...
?
? ?攔截器的preHandle: 是按照順序執行。
? ?攔截器的postHandle: 是按照逆序執行。
? ?攔截器的afterCompletion: 是按照逆序執行。
?
異常流程:
? ?1.不放行
? ? ?1). 哪一塊不放行,從此以后的流程不會執行
? ? ? ?MySecondInterceptor不放行,但是他前面已經放行了的攔截器的afterCompletion還是會執行。
? ? ? ??.MyFirstInterceptor..preHandle...
? ? ? ??.MySecondInterceptor..preHandle...
? ? ? ??.MyFirstInterceptor..afterCompletion...
?
?
攔截器與過濾器
? 什么時候用攔截器? 什么時候用過濾器?
? 如果某些功能,需要其他組件配合完成,我們就使用攔截器;其他情況可以使用過濾器filter。
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的springmvc二十九:拦截器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springmvc二十八:springm
- 下一篇: springmvc三十:异常处理流程