過濾器和攔截器的區(qū)別

過濾器(Filter)

過濾器永脓,是在java web中將你傳入的request擂煞、response提前過濾掉一些信息伦连,或者提前設(shè)置一些參數(shù)拳昌。然后再傳入Servlet或Struts2的 action進(jìn)行業(yè)務(wù)邏輯處理袭异。比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉)炬藤,或者在傳入Servlet或Struts2的action前統(tǒng)一設(shè)置字符集御铃,或者去除掉一些非法字符。

攔截器(Interceptor)

攔截器沈矿,是面向切面編程(AOP上真,Aspect Oriented Program)的。就是在你的Service或者一個方法前調(diào)用一個方法羹膳,或者在方法后調(diào)用一個方法睡互。比如動態(tài)代理就是攔截器的簡單實現(xiàn),在你調(diào)用方法前打印出字符串(或者做其它業(yè)務(wù)邏輯的操作)陵像,也可以在你調(diào)用方法后打印出字符串就珠,甚至在你拋出異常的時候做業(yè)務(wù)邏輯的操作。

簡單理解

1醒颖、過濾器就是過濾你的請求和響應(yīng)妻怎,選擇一些允許通過,一些不允許通過的泞歉。
2逼侦、攔截器就是干預(yù)一個流程的進(jìn)展匿辩,設(shè)法改變其中通過驗證的數(shù)量

倆者主要區(qū)別

①:攔截器是基于java的反射機(jī)制的,而過濾器是基于函數(shù)的回調(diào)榛丢。
②:攔截器不依賴于servlet容器铲球,而過濾器依賴于servlet容器。
③:攔截器只對action請求起作用涕滋,而過濾器則可以對幾乎所有的請求起作用睬辐。
④:攔截器可以訪問action上下文、值宾肺、棧里面的對象溯饵,而過濾器不可以。
⑤:在action的生命周期中锨用,攔截器可以多次被調(diào)用丰刊,而過濾器只能在容器初始化時被調(diào)用一次。
⑥:攔截器可以獲取IOC容器中的各個bean增拥,而過濾器不行啄巧,這點很重要,在攔截器里注入一個service掌栅,可以調(diào)用業(yè)務(wù)邏輯秩仆。
攔截器和過濾器的觸發(fā)時機(jī)也不一樣,過濾器主要是請求進(jìn)入容器后猾封,但請求進(jìn)入

servlet之前進(jìn)行預(yù)處理的澄耍。請求結(jié)束返回也是,是在servlet處理完后晌缘,返回給前端之前齐莲,過濾器包裹servlet,servlet包裹攔截器磷箕。

使用場景

SpringMVC的處理器攔截器類似于Servlet開發(fā)中的過濾器Filter选酗,用于對處理器進(jìn)行預(yù)處理和后處理。

1岳枷、日志記錄:記錄請求信息的日志芒填,以便進(jìn)行信息監(jiān)控、信息統(tǒng)計空繁、計算PV(Page View)等氢烘。
2、權(quán)限檢查:如登錄檢測家厌,進(jìn)入處理器檢測檢測是否登錄播玖,如果沒有直接返回到登錄頁面;
3饭于、性能監(jiān)控:有時候系統(tǒng)在某段時間莫名其妙的慢蜀踏,可以通過攔截器在進(jìn)入處理器之前記錄開始時間维蒙,在處理完后記錄結(jié)束時間,從而得到該請求的處理時間(如果有反向代理果覆,如apache可以自動記錄)颅痊;
4、通用行為:讀取cookie得到用戶信息并將用戶對象放入請求局待,從而方便后續(xù)流程使用斑响,還有如提取Locale、Theme信息等钳榨,只要是多個處理器都需要的即可使用攔截器實現(xiàn)舰罚。
5、OpenSessionInView:如hibernate薛耻,在進(jìn)入處理器打開Session营罢,在完成后關(guān)閉Session。

參考博文:
攔截器與過濾器的區(qū)別℡tang的博客-CSDN博客攔截器和過濾器的區(qū)別

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饼齿,一起剝皮案震驚了整個濱河市饲漾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缕溉,老刑警劉巖考传,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異证鸥,居然都是意外死亡伙菊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門敌土,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人运翼,你說我怎么就攤上這事返干。” “怎么了血淌?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵矩欠,是天一觀的道長。 經(jīng)常有香客問我悠夯,道長癌淮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任沦补,我火速辦了婚禮乳蓄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘夕膀。我一直安慰自己虚倒,他們只是感情好美侦,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著魂奥,像睡著了一般菠剩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上耻煤,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天具壮,我揣著相機(jī)與錄音,去河邊找鬼哈蝇。 笑死棺妓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的买鸽。 我是一名探鬼主播涧郊,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼眼五!你這毒婦竟也來了妆艘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤看幼,失蹤者是張志新(化名)和其女友劉穎批旺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诵姜,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡汽煮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棚唆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暇赤。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宵凌,靈堂內(nèi)的尸體忽然破棺而出鞋囊,到底是詐尸還是另有隱情,我是刑警寧澤瞎惫,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布溜腐,位于F島的核電站,受9級特大地震影響瓜喇,放射性物質(zhì)發(fā)生泄漏挺益。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一乘寒、第九天 我趴在偏房一處隱蔽的房頂上張望望众。 院中可真熱鬧,春花似錦、人聲如沸黍檩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刽酱。三九已至喳逛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棵里,已是汗流浹背润文。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留殿怜,地道東北人典蝌。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像头谜,于是被迫代替她去往敵國和親骏掀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容