區(qū)別:過濾器作用于請求到達servlet之前高蜂,在spring中也就是在dispacherServlet之前。而攔截器最早只能作用于請求到達servlet之后潦闲。
(1)過濾器:
依賴于servlet容器乡革。在實現(xiàn)上基于函數(shù)回調,可以對幾乎所有請求進行過濾亚情,但是缺點是一個過濾器實例只能在容器初始化時調用一次妄痪。使用過濾器的目的是用來做一些過濾操作,獲取我們想要獲取的數(shù)據(jù)楞件,比如:在過濾器中修改字符編碼衫生;在過濾器中修改HttpServletRequest的一些參數(shù),包括:過濾低俗文字土浸、危險字符等罪针。
(2)攔截器:
依賴于web框架,在SpringMVC中就是依賴于SpringMVC框架黄伊。在實現(xiàn)上基于java的反射機制泪酱,屬于面向切面編程(AOP)的一種運用。由于攔截器是基于web框架的調用还最,因此可以使用Spring的依賴注入(DI)進行一些業(yè)務操作墓阀,同時一個攔截器實例在一個controller生命周期之內(nèi)可以多次調用。但是缺點是只能對controller請求進行攔截拓轻,對其他的一些比如直接訪問靜態(tài)資源的請求則沒辦法進行攔截處理