Filter與interceptor的區(qū)別
轉(zhuǎn):http://zxfflying.spaces.live.com/blog/cns!e2d4979e975b3e4b!153.entry
前幾天有人跟我說interceptor跟filter差不多,這個(gè)當(dāng)時(shí)還真把我蒙住了,我知道有區(qū)別,但沒想清楚,這幾天整理了一下。
首先從表現(xiàn)形式上來說,兩者確實(shí)很相似,同樣可以在你寫的jsp、servlet代碼的前后加入其它的動作,但是兩者是有本質(zhì)區(qū)別的。
1、 filter基于回調(diào)函數(shù),我們需要實(shí)現(xiàn)的filter接口中doFilter方法就是回調(diào)函數(shù),而interceptor則基于java本身的反射機(jī)制,如果對這種形式不了解,可以去看看java是如何實(shí)現(xiàn)動態(tài)代理的,這是aop的基礎(chǔ)。這是兩者最本質(zhì)的區(qū)別。
2、 filter是依賴于servlet容器的,即只能在servlet容器中執(zhí)行,很顯然沒有servlet容器就無法來回調(diào)doFilter方法。而interceptor與servlet容器無關(guān)。
posted on 2008-08-18 19:51 gdufo 閱讀(2192) 評論(0) 編輯 收藏 所屬分類: Struts2