2019-06-11

過濾器

Filter 即為過濾巍耗,用于在 Servlet 之外對 Request 或者 Response 進行修改锌介。

它主要用于對用戶請求進行預處理嗜诀,也可以對 HttpServletResponse 進行后處理猾警。

使用 Filter 的完整流程: Filter 對用戶請求進行預處理,接著將請求交給 Servlet

進行處理并生成響應隆敢,最后 Filter 再對服務器響應進行后處理发皿。在一個 web 應

用中,可以開發(fā)編寫多個 Filter拂蝎,這些 Filter 組合起來稱之為一個 Filter 鏈穴墅。

若是一個過濾器鏈:先配置先執(zhí)行(請求時的執(zhí)行順序);響應時: 以相反的

順序執(zhí)行温自。


實現(xiàn)過濾

我們可以通過實現(xiàn)一個叫做 javax.servlet.Fileter 的接口來實現(xiàn)一個過濾器玄货,

其中定義了三個方法,init(), doFilter(), destroy()分別在相應的時機執(zhí)行捣作。后期觀

察生命周期誉结。 Filter 的實現(xiàn)只需要兩步:

Step1: 編寫 java 類實現(xiàn) Filter 接口,并實現(xiàn)其 doFilter 方法券躁。

Step2: 在 web.xml 文件中對編寫的 filter 類進行注冊惩坑,并設(shè)置它所能攔截

的資源

Filter 接口中有一個 doFilter 方法,當開發(fā)人員編寫好 Filter也拜,并配置對哪

個 web 資源進行攔截后以舒,Web 服務器每次在調(diào)用 web 資源的 service 方法之

前,都會先調(diào)用一下 filter 的 doFilter 方法慢哈。因此可以達到如下效果:

調(diào)用目標資源之前蔓钟,讓一段代碼執(zhí)行。

是否調(diào)用目標資源(即是否讓用戶訪問 web 資源)卵贱。

web 服務器在調(diào)用 doFilter 方法時滥沫,會傳遞一個 filterChain 對象進來,

filterChain 對象是 filter 接口中最重要的一個對象键俱,它提供了一個 doFilter 方法兰绣,

開發(fā)人員可以根據(jù)需求決定是否調(diào)用此方法,調(diào)用該方法编振,則 web 服務器就

會調(diào)用 web 資源的 service 方法缀辩,即 web 資源就會被訪問,否則 web 資源不

會被訪問踪央。(本質(zhì)是放行臀玄,調(diào)用 doFilter 方法后,即請求可以到達資源)


url-pattern 的配置:

[if !supportLists]②??????????[endif]置具體路徑/index.html/TestServlet.do

②帶有通配符的配置*.do /* /user/* *.html *.jsp


監(jiān)聽器

web 監(jiān)聽器是一種 Servlet 中的特殊的類畅蹂,它們能幫助開發(fā)者監(jiān)聽 web 中

的特定事件健无,比如 ServletContext,HttpSession,ServletRequest 的創(chuàng)建和銷毀;變

量的創(chuàng)建液斜、銷毀和修改等累贤。 可以在某些動作前后增加處理募胃,實現(xiàn)監(jiān)控。例如可

以用來統(tǒng)計在線人數(shù)等畦浓。

實現(xiàn)

監(jiān)聽器有三類 8 種:⑴監(jiān)聽生命周期:實現(xiàn)接口ServletRequestListener、

HttpSessionListener检疫、 ServletContextListener⑵監(jiān)聽值的變化:實現(xiàn)接口

ServletRequestAttributeListener讶请、HttpSessionAttributeListener、

ServletContextAttributeListener⑶針對 session 中的對象:監(jiān)聽 session 中的

java 對象(javaBean) 是 javaBean 直接實現(xiàn)監(jiān)聽器的接口屎媳。這里我們只做一個簡

單的演示夺溢。假設(shè)我們想做一個對在線人數(shù)的監(jiān)控。

Step1:創(chuàng)建一個監(jiān)聽器烛谊,需要實現(xiàn)某種接口风响,根據(jù)需求選取

HttpSessionListener

Step2:在 web.xml 中配置該監(jiān)聽器

創(chuàng)建一個類,并實現(xiàn) HttpSessionListener 接口丹禀,用來檢測 Session 的創(chuàng)建和

銷毀状勤。在類中定義一個成員變量用來存儲當前的 session 個數(shù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末双泪,一起剝皮案震驚了整個濱河市持搜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌焙矛,老刑警劉巖葫盼,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異村斟,居然都是意外死亡贫导,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門蟆盹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孩灯,“玉大人,你說我怎么就攤上這事日缨∏矗” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵匣距,是天一觀的道長面哥。 經(jīng)常有香客問我,道長毅待,這世上最難降的妖魔是什么尚卫? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮尸红,結(jié)果婚禮上吱涉,老公的妹妹穿的比我還像新娘刹泄。我一直安慰自己,他們只是感情好怎爵,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布特石。 她就那樣靜靜地躺著,像睡著了一般鳖链。 火紅的嫁衣襯著肌膚如雪姆蘸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天芙委,我揣著相機與錄音逞敷,去河邊找鬼。 笑死灌侣,一個胖子當著我的面吹牛推捐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侧啼,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼牛柒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了痊乾?” 一聲冷哼從身側(cè)響起焰络,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎符喝,沒想到半個月后闪彼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡协饲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年畏腕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茉稠。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡描馅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出而线,到底是詐尸還是另有隱情铭污,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布膀篮,位于F島的核電站嘹狞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏誓竿。R本人自食惡果不足惜磅网,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望筷屡。 院中可真熱鬧涧偷,春花似錦簸喂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至确封,卻和暖如春诽表,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背隅肥。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留袄简,地道東北人腥放。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像绿语,于是被迫代替她去往敵國和親秃症。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

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