1. 程式人生 > 其它 >Spring MVC 攔截器 interceptor

Spring MVC 攔截器 interceptor

一、兩種方式來定義:

1.通過實現HandlerInterceptor介面,或繼承HandlerInterceptor介面的實現類(如HandlerInterceptorAdapter)來定義。

2.通過實現WebRequestInterceptor介面,或繼承WebRequestInterceptor介面的實現類來定義。

 

二、xml配置

<!--配置自定義的攔截器-->
<mvc:interceptors>
<!--攔截器1-->
<mvc:interceptor>
<!--配置攔截器的作用路徑-->
<mvc:mapping path= "/user/**"/><!--攔截的路徑規則-->
<!--定義在<mvc:interceptor>下面的表示匹配指定路徑的請求才進行攔截-->
<bean class="com.mmm.interceptors.UserInterceptor1"/>
</mvc:interceptor>
<!--攔截器2-->
<mvc:interceptor>
<mvc:mapping path="/user/**"/>
<bean class="com.mmm.interceptors.UserInterceptor2"/>
</mvc:interceptor>
</mvc:interceptors>

 

三、處理過程

1.程式先執行preHandle()方法,如果該方法的返回值為true,則程式會繼續向下執行處理器中的方法,否則將不再向下執行。

2.在業務處理器(即控制器Controller類)處理完請求後,會執行postHandle()方法,然後會通過DispatcherServlet向客戶端返回響應。

3.在DispatcherServlet處理完請求後,才會執行afterCompletion()方法。

 

四、多攔截器處理過程

preHandle1 -> preHande2 -> 【Controller】 -> postHandle2 -> postHandle1 -> afterCompletion2 -> afterComplention1