更新時間:2022-10-25 10:35:39 來源:動力節(jié)點 瀏覽1403次
1.攔截器和過濾器體現(xiàn)AOP思想,實現(xiàn)方法的增強,可以攔截請求的方法。
2.攔截器和Filter過濾器可以通過Order Annotation設(shè)置執(zhí)行順序
1.Filter屬于Servlet Level,Interceptors屬于Spring Level
Filter是在javax.servlet包中定義的,依賴于網(wǎng)絡(luò)容器,所以只能在web項目中使用。
攔截器是在 SpringMVC 中實現(xiàn)的,歸根結(jié)底,最底層的攔截器是一個 Spring Components ,由 Spring Container 管理。
2.過濾器和攔截器的執(zhí)行順序不同:
這是一張顯示過濾器和攔截器執(zhí)行順序的圖片
首先,當(dāng)請求進入 Servlet 之前,過濾器的 doFilter 方法進行過濾,
進入 Servlet 容器后,執(zhí)行 Controller 的 Before 方法,攔截器的 preHandle 方法進行攔截,
執(zhí)行Controller的After方法,渲染視圖之前,攔截器的postHandle方法進行攔截,
請求后,執(zhí)行攔截器 postHandle 方法。
3.基于過濾器的函數(shù)回調(diào)如何實現(xiàn),攔截器是基于Java的反射機制實現(xiàn)的。
相關(guān)閱讀