【SpringBoot】過濾器(filter)和攔截器(interceptor)區別

一、filter基於filter接口中的doFilter回調函數,interceptor則基於Java本身的反射機制;

二、filter是依賴於servlet容器的,沒有servlet容器就無法回調doFilter方法,而interceptorservlet無關;

三、filter的過濾範圍比interceptor大,filter除了過濾請求外通過通配符可以保護頁面、圖片、文件等,
而interceptor只能過濾請求,只對action起作用,在action之前開始,在action完成後結束(如被攔截,不執行action);

四、filter的過濾一般在加載的時候在init方法聲明,而interceptor可以通過在xml聲明是guest請求還是user請求來辨別是否過濾;

五、interceptor可以訪問action上下文、值棧裏的對象,而filter不能;

六、在action的生命週期中,攔截器可以被多次調用,而過濾器只能在容器初始化時被調用一次。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章