定義
Spring MVC 的攔截器(Interceptor)與 asp.net的管道過濾器類似,它主要用於攔截用戶的請求並做相應的處理,通常應用在權限驗證、記錄請求信息的日志、判斷用戶是否登錄等。
攔截器的定義
在 Spring MVC 框架中定義一個攔截器需要對攔截器進行定義和配置,主要有以下 2 種方式。
通過實現 HandlerInterceptor 接口或繼承 HandlerInterceptor 接口的實現類(例如 HandlerInterceptorAdapter)來定義;
- 通過實現 WebRequestInterceptor 接口或繼承 WebRequestInterceptor 接口的實現類來定義。
- 本節以實現 HandlerInterceptor 接口的定義方式為例講解自定義攔截器的使用方法。示例代碼如下。
springmvc配置文件配置自定義攔截器
控制器
瀏覽器訪問結果
控制台輸出
詳細解析
-
瀏覽器訪問http://localhost:8080/Login/main 前端控制器DispatchServlet處理請求,通過處理映射器HandlerMapping獲取handler(也就是我們后台的Controller里的方法,返回給DispatchServlet。
-
DispatchServlet請求適配器處理器HandlerAdapter
-
HandlerAdapter根據handler配置執行對應的handler(也就是控制器里的方法Index)
-
執行控制器方法Index前,就會被TestInterceptor攔截器截獲,執行preHandle方法,
-
index方法調用后,在視圖還未解析的時候,執行postHandle方法
-
index方法執行完成后執行,即視圖渲染結束后執行afterCompletion方法