天天看點

springMVC3學習(七)--Interceptor攔截器

Spring為我們提供了:org.springframework.web.servlet.HandlerInterceptor接口,

org.springframework.web.servlet.handler.HandlerInterceptorAdapter擴充卡,

實作這個接口或繼承此類,可以非常友善的實作自己的攔截器。

有以下三個方法:

Action之前執行

生成視圖之前執行

最後執行,可用于釋放資源

分别實作預處理、後處理(調用了Service并傳回ModelAndView,但未進行頁面渲染)、傳回處理(已經渲染了頁面)

在preHandle中,可以進行編碼、安全控制等處理;

在postHandle中,有機會修改ModelAndView;

在afterCompletion中,可以根據ex是否為null判斷是否發生了異常,進行日志記錄。

參數中的Object handler是下一個攔截器。

如何使用攔截器

自定義一個攔截器,要實作HandlerInterceptor接口:

在springMVC的配置檔案中配置有三種方法

一、攔截所有URL

二、攔截比對的URL

三、HandlerMappint上的攔截器

如果使用了<mvc:annotation-driven />, 它會自動注冊DefaultAnnotationHandlerMapping 與

AnnotationMethodHandlerAdapter 這兩個bean,是以就沒有機會再給它注入interceptors屬性,就無法指定攔截器。

當然我們可以通過人工配置上面的兩個Bean,不使用 <mvc:annotation-driven />,

就可以給interceptors屬性注入攔截器了。

攔截器MyInterceptor類

spring配置檔案

測試URL:http://localhost:8080/spring_Interceptor/login

檢視背景會執行攔截器代碼

項目源碼下載下傳:待上傳

繼續閱讀