過濾器(filter)和攔截器(interceptor)區(qū)別
一、filter基于filter接口中的doFilter回調(diào)函數(shù),interceptor則基于Java本身的反射機(jī)制; 二、filter是依賴于servlet容器的,沒有servlet容器就無法回調(diào)doFilter方法,而interceptor與servlet無關(guān); 三、filter的過濾范圍比interceptor大,filter除了過濾請求外通過通配符可以保護(hù)頁面、圖片、文件等,而interceptor只能過濾請求,只對action起作用,在action之前開始,在action完成后結(jié)束(如被攔截,不執(zhí)行action); 四、filter的過濾一般在加載的時(shí)候在init方法聲明,而interceptor可以通過在xml聲明是guest請求還是user請求來辨別是否過濾; 五、interceptor可以訪問action上下文、值棧里的對象,而filter不能; 六、在action的生命周期中,攔截器可以被多次調(diào)用,而過濾器只能在容器初始化時(shí)被調(diào)用一次posted on 2016-06-15 22:28 youngturk 閱讀(402) 評論(0) 編輯 收藏 所屬分類: 筆試題