spring mvc 攔截器(Interceptor)詳解


定義

Spring MVC 的攔截器(Interceptor)與 asp.net的管道過濾器類似,它主要用於攔截用戶的請求並做相應的處理,通常應用在權限驗證、記錄請求信息的日志、判斷用戶是否登錄等。

攔截器的定義

在 Spring MVC 框架中定義一個攔截器需要對攔截器進行定義和配置,主要有以下 2 種方式。
通過實現 HandlerInterceptor 接口或繼承 HandlerInterceptor 接口的實現類(例如 HandlerInterceptorAdapter)來定義;

  1. 通過實現 WebRequestInterceptor 接口或繼承 WebRequestInterceptor 接口的實現類來定義。
  2. 本節以實現 HandlerInterceptor 接口的定義方式為例講解自定義攔截器的使用方法。示例代碼如下。

image

springmvc配置文件配置自定義攔截器

image

控制器

image

瀏覽器訪問結果

image

控制台輸出

image

詳細解析
  1. 瀏覽器訪問http://localhost:8080/Login/main 前端控制器DispatchServlet處理請求,通過處理映射器HandlerMapping獲取handler(也就是我們后台的Controller里的方法,返回給DispatchServlet。

  2. DispatchServlet請求適配器處理器HandlerAdapter

  3. HandlerAdapter根據handler配置執行對應的handler(也就是控制器里的方法Index)

  4. 執行控制器方法Index前,就會被TestInterceptor攔截器截獲,執行preHandle方法,

  5. index方法調用后,在視圖還未解析的時候,執行postHandle方法

  6. index方法執行完成后執行,即視圖渲染結束后執行afterCompletion方法

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM