Spring MVC 攔截器(1)-HandlerInterceptor

攔截器的用途是很是廣的,它主要的做用是攔截用戶請求,處理數據,斷定請求是否合理,決定是否放行。一般把攔截器用來驗證權限、判斷用登錄狀態等。spring

springMVC中對攔截器有良好的支持。通常可經過兩種方式,其一實現Spring 的HandlerInterceptor 接口或繼承該接口的實現類;其二實現Spring的WebRequestInterceptor接口貨繼承該接口的實現類。mvc

今天小博老師先給你們介紹SpringMVC中第一種攔截器的實現方式。咱們先來看一下HandlerInterceptor接口的源碼結構:app

HandlerInterceptor 接口中定義了三個方法:post

1. preHandle 方法。該方法會在請求處理以前進行調用。返回值是布爾值Boolean 類型的,當返回false時請求結束,後續攔截器 和Controller 都不會被執行;當返回true 時繼續調用下個攔截器 的preHandle 方法,若是已是最後一個攔截器,則調用當前請求的Controller 方法。spa

2. postHandle 方法。該方法在請求處理以後,即Controller 方法調用以後執行。可是將會DispatcherServlet 進行視圖渲染以前被調用,所以能夠對Controller 處理以後的ModelAndView 對象進行操做,以便於在視圖渲染時使用。3d

3. afterCompletion方法。該方法在整個請求結束以後,即DispatcherServlet 渲染對應的視圖以後才被執行。這個方法的主要做用是進行對象清理、資源釋放。code

攔截器在spring中的配置方式以下:對象

<mvc:interceptors>  blog

    <!-- 使用bean定義一個Interceptor,直接定義在mvc:interceptors根下面的Interceptor將攔截全部的請求 -->  繼承

    <bean class="com.bwf.interceptor.BwfInterceptor"/>  

    <mvc:interceptor>  

        <mvc:mapping path="/bwf/company"/>  

        <!-- 定義在mvc:interceptor下面的表示是對特定的請求才進行攔截的 -->  

        <bean class="com.bwf.interceptor.LoginInterceptor"/>  

    </mvc:interceptor>  

</mvc:interceptors>  

相關文章
相關標籤/搜索