2019-08-09

監(jiān)聽(tīng)器和過(guò)濾器

監(jiān)聽(tīng)器

* 作用:

* 監(jiān)聽(tīng)request民傻、session嵌溢、application三個(gè)域?qū)ο蟮膭?chuàng)建蛀蜜,銷毀和數(shù)據(jù)的變更

* 使用:

* 1特碳、創(chuàng)建一個(gè)普通java類實(shí)現(xiàn)指定的接口

1.監(jiān)聽(tīng)request的創(chuàng)建和銷毀:ServletRequestListener

* requestInitialized(ServletRequestEvent sre)

* requestDestroyed(ServletRequestEvent sre)

? 形參:

? ServletRequestEvent可以獲取當(dāng)前監(jiān)聽(tīng)到的request對(duì)象诚亚,對(duì)request對(duì)象的中的資源進(jìn)行操作晕换。

2.? ? 監(jiān)聽(tīng)request作用域數(shù)據(jù)的變更:ServletRequestAttributeListener

* attributeAdded(ServletRequestAttributeEvent srae)

* attributeRemoved(ServletRequestAttributeEvent srae)

* attributeReplaced(ServletRequestAttributeEvent srae)

* 形參:

* ServletRequestAttributeEvent可以獲取當(dāng)前被監(jiān)聽(tīng)到的request中的數(shù)據(jù)。

* geName()返回監(jiān)聽(tīng)到的數(shù)據(jù)的鍵和getValue()返回監(jiān)聽(tīng)的到的數(shù)據(jù)的值站宗。

注意:獲取的值總是第一個(gè)設(shè)置的值闸准。

3.? ? 監(jiān)聽(tīng)session的創(chuàng)建和銷毀:HttpSessionListener

* sessionCreated(HttpSessionEvent se)

* sessionDestroyed(HttpSessionEvent se)

* 形參:

* 獲取當(dāng)前被監(jiān)聽(tīng)到的session對(duì)象

4 、 監(jiān)聽(tīng)session的作用域數(shù)據(jù)的變更:

* attributeAdded(HttpSessionBindingEvent event)

* attributeRemoved(HttpSessionBindingEvent event)

* attributeReplaced(HttpSessionBindingEvent event)

* 形參:

* 獲取當(dāng)前監(jiān)聽(tīng)到的session中的數(shù)據(jù) getName()返回?cái)?shù)據(jù)的鍵名梢灭,getValue()返回?cái)?shù)據(jù)的值

5.? ?監(jiān)聽(tīng)application對(duì)象的創(chuàng)建和銷毀:ServletContextListener

* contextInitialized(ServletContextEvent sce)

* contextDestroyed(ServletContextEvent sce)

* 形參:

* 獲取application對(duì)象

6.? ?監(jiān)聽(tīng)application對(duì)象的數(shù)據(jù)的變更:ServletContextAttributeListener

* attributeAdded(ServletContextAttributeEvent event)

* attributeRemoved(ServletContextAttributeEvent event)

* attributeReplaced(ServletContextAttributeEvent event)

* 形參:獲取當(dāng)前被監(jiān)聽(tīng)的數(shù)據(jù) getName()返回?cái)?shù)據(jù)的鍵名夷家,getValue()返回?cái)?shù)據(jù)的值

7、在項(xiàng)目中的web.xml中配置監(jiān)聽(tīng)器敏释,讓監(jiān)聽(tīng)器生效

* <listener>

? <listener-class>監(jiān)聽(tīng)器類的包名和類名</listener-class>

? </listener>

? 示例:

? <listener>

? <listener-class>com.bjsxt.listener.MyListener</listener-class>

? </listener>

案例:統(tǒng)計(jì)在線人數(shù)

過(guò)濾器

1.為什么需要過(guò)濾器库快?

* 目前我們?cè)L問(wèn)Servlet,是可以直接進(jìn)行訪問(wèn)的钥顽,沒(méi)有進(jìn)行任何防護(hù)缺谴。可是會(huì)造成服務(wù)器資源的浪費(fèi)耳鸯,以及安全性不高湿蛔。我們希望真的在請(qǐng)求被Servlet處理之前,進(jìn)行一次請(qǐng)求的校驗(yàn)县爬,符合要求再調(diào)用對(duì)應(yīng)的Servlet進(jìn)行請(qǐng)求處理

2.過(guò)濾器使用:

2.1阳啥、創(chuàng)建一個(gè)普通java類并實(shí)現(xiàn)過(guò)濾器接口Filter

2.2、在web.xml中配置過(guò)濾器

* <filter>

<filter-name>配置的過(guò)濾器名稱</filter-name>

<filter-class>要配置的過(guò)濾器的全限定路徑:包名.類名</filter-class>

</filter>

<filter-mapping>

<filter-name>配置的過(guò)濾器名稱</filter-name>

<url-pattern>過(guò)濾器攔截請(qǐng)求地址的范圍</url-pattern>

</filter-mapping>

示例:

<filter>

<filter-name>myFilter</filter-name>

<filter-class>com.bjsxt.filter.MyFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>myFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

3.Filter接口的方法

過(guò)濾器之doFilter方法

作用: 服務(wù)器在接收到瀏覽器發(fā)過(guò)來(lái)的請(qǐng)求后财喳,先解析請(qǐng)求信息察迟,創(chuàng)建對(duì)象request和response

然后根據(jù)請(qǐng)求URL地址判斷如果符合過(guò)濾器的過(guò)濾范圍,則會(huì)調(diào)用過(guò)濾器中的doFilter來(lái)

進(jìn)行請(qǐng)求攔截耳高,并將request和response對(duì)象作為實(shí)參傳遞給doFilter方法扎瓶。我們

可以在doFilter方法中聲明過(guò)濾器攔截代碼。

參數(shù):

ServletRequest:接收此次攔截的請(qǐng)求的request實(shí)參

ServletResponse:接收此次攔截的請(qǐng)求的response實(shí)參

FilterChain:可以進(jìn)行請(qǐng)求放行

chain.doFilter(request, response);

技能點(diǎn)二:過(guò)濾器之init和destory方法

init方法:服務(wù)器啟動(dòng)時(shí)調(diào)用

destory方法:服務(wù)器關(guān)閉時(shí)調(diào)用

證明:過(guò)濾器的生命周期為從服務(wù)器開(kāi)啟到服務(wù)器關(guān)閉

4.:過(guò)濾器之?dāng)r截范圍配置

攔截所有:/*

攔截部分Servlet的請(qǐng)求:*.do

攔截指定Servlet的請(qǐng)求:和要攔截的指定的Servlet的url-pattern配置完全一致即可泌枪,例如:/my

注意:過(guò)濾器之間會(huì)出現(xiàn)多重?cái)r截概荷,如果是按照攔截?cái)r截范圍的大小在web.xml中自大而小進(jìn)行的配置

則會(huì)先執(zhí)行大范圍的攔截器,再執(zhí)行小范圍的攔截器碌燕。

過(guò)濾器案例:參照整合項(xiàng)目中的過(guò)濾器寫法

使用過(guò)濾器統(tǒng)一編碼格式

使用過(guò)濾器進(jìn)行session管理

使用過(guò)濾器進(jìn)行權(quán)限管理


5误证、過(guò)濾器案例之統(tǒng)一請(qǐng)求編碼格式

在doFilter中使用

?//設(shè)置請(qǐng)求編碼格式

request.setCharacterEncoding("utf-8");

//設(shè)置響應(yīng)編碼格式

?response.setContentType("text/html;charset=utf-8");???????????????

注意:一旦使用了過(guò)濾器,就需要在過(guò)濾其中使用編碼格式設(shè)置修壕,如果不設(shè)置愈捅,則需要在每個(gè)servlet中是設(shè)置編碼格式設(shè)置。

6.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末慈鸠,一起剝皮案震驚了整個(gè)濱河市蓝谨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖譬巫,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咖楣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡缕题,警方通過(guò)查閱死者的電腦和手機(jī)截歉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)烟零,“玉大人瘪松,你說(shuō)我怎么就攤上這事∠前ⅲ” “怎么了宵睦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)墅诡。 經(jīng)常有香客問(wèn)我壳嚎,道長(zhǎng),這世上最難降的妖魔是什么末早? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任烟馅,我火速辦了婚禮渴庆,結(jié)果婚禮上咸灿,老公的妹妹穿的比我還像新娘。我一直安慰自己疮薇,他們只是感情好姿搜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布寡润。 她就那樣靜靜地躺著,像睡著了一般舅柜。 火紅的嫁衣襯著肌膚如雪梭纹。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天致份,我揣著相機(jī)與錄音变抽,去河邊找鬼。 笑死知举,一個(gè)胖子當(dāng)著我的面吹牛瞬沦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雇锡,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼僚焦!你這毒婦竟也來(lái)了锰提?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎立肘,沒(méi)想到半個(gè)月后边坤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谅年,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年茧痒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片融蹂。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旺订,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出超燃,到底是詐尸還是另有隱情区拳,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布意乓,位于F島的核電站樱调,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏届良。R本人自食惡果不足惜笆凌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望士葫。 院中可真熱鬧乞而,春花似錦、人聲如沸为障。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鳍怨。三九已至呻右,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鞋喇,已是汗流浹背声滥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侦香,地道東北人落塑。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像罐韩,于是被迫代替她去往敵國(guó)和親憾赁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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