2020-03-25

作業(yè):


(一)監(jiān)聽器的概述

1态辛、什么是監(jiān)聽器監(jiān)聽器就是一個實現(xiàn)了特定接口的Java類闪唆,這個Java類用于監(jiān)聽另一個Java類的方法調(diào)用,或者屬性的改變廷蓉。當(dāng)被監(jiān)聽對象發(fā)生上述事件后掷漱,監(jiān)聽器某個方法將會立即被執(zhí)行

2粘室、監(jiān)聽器的用途用來監(jiān)聽其他對象的變化的,主要應(yīng)用在圖形化界面的開發(fā)上例如Java中的GUI卜范、Android等衔统,都有大量的監(jiān)聽器的使

3、監(jiān)聽器的術(shù)語事件源:指的是被監(jiān)聽對象(汽車)監(jiān)聽器:指的是監(jiān)聽的對象(報警器)事件源和監(jiān)聽器綁定:在汽車上安裝報警器事件:指的是事件源對象的改變(踹了汽車一腳)先朦,主要功能是獲得事件源對

(二)監(jiān)聽器的入門

1缰冤、監(jiān)聽器的入門程序

2、監(jiān)聽器的執(zhí)行過程

(三)Servlet中的監(jiān)聽器

一喳魏、Servlet中的監(jiān)聽器簡介在Servlet中定義了多種類型的監(jiān)聽器棉浸,它們用于監(jiān)聽的事件源分別是ServletContext、HttpSession和ServletRequest這三個域?qū)ο?/p>

二刺彩、Servlet中的監(jiān)聽器的分類

1迷郑、一類:監(jiān)聽三個域?qū)ο蟮膭?chuàng)建和銷毀的監(jiān)聽器(三個)

2、二類:監(jiān)聽三個域?qū)ο蟮膶傩宰兏▽傩蕴砑哟淳蟆⒁瞥撕Α⑻鎿Q)的監(jiān)聽器(三個)

3、三類:監(jiān)聽HttpSession中JavaBean的狀態(tài)改變(鈍化畦攘、活化霸妹、綁定、解除綁定)的監(jiān)聽(兩個)

(四)ServletContextListener監(jiān)聽器的使用

一知押、ServletContextListener監(jiān)聽器的作用用來監(jiān)聽ServletContext域?qū)ο蟮膭?chuàng)建和銷毀的監(jiān)聽器

二叹螟、ServletContext創(chuàng)建和銷毀

1、創(chuàng)建:在服務(wù)器啟動的時候台盯,為每個Web應(yīng)用創(chuàng)建單獨的ServletContext對象

2罢绽、銷毀:在服務(wù)器關(guān)閉的時候,或者項目從Web服務(wù)器中移除的時候

三静盅、ServletContextListener監(jiān)聽器的方法

1良价、監(jiān)聽ServletContext對象的創(chuàng)建contextInitialized(ServletContextEvent sce)

2、監(jiān)聽ServletContext對象的銷毀ontextDestroyed(ServletContextEvent sce)

四蒿叠、編寫監(jiān)聽器

1明垢、監(jiān)聽器的代碼

2、監(jiān)聽器的配置

五栈虚、ServletContextListener的企業(yè)用途

1袖外、加載框架的配置文件Spring框架提供了一個核心監(jiān)聽器叫ContextLoaderListener

2、定時任務(wù)調(diào)度

(五)HttpSessionListener監(jiān)聽器的使用

一魂务、HttpSessionListener監(jiān)聽器作用用來監(jiān)聽HttpSession對象的創(chuàng)建和銷毀

二曼验、HttpSession創(chuàng)建和銷毀創(chuàng)建:服務(wù)器端第一次調(diào)用getSession()方法的時候銷毀:非正常關(guān)閉服務(wù)器(正常關(guān)閉服務(wù)器Session會被序列化)Session過期(默認(rèn)過期時間30分鐘)手動調(diào)用session.invalidate()方法

三泌射、HttpSessionListener

監(jiān)聽器的方法

1、監(jiān)聽HttpSession對象創(chuàng)建sessionCreated(HttpSessionEvent se)

2鬓照、監(jiān)聽HttpSession對象銷毀sessionDestroyed(HttpSessionEvent se)

四熔酷、編寫監(jiān)聽器監(jiān)聽HttpSession對象創(chuàng)建和銷毀

1、監(jiān)聽器的代碼

2豺裆,監(jiān)聽器的配置

3拒秘、問題:訪問HTML是否會創(chuàng)建Session?訪問JSP是否會創(chuàng)建Session臭猜?訪問Servlet是否會創(chuàng)建Session躺酒?

(六)ServletRequestListener監(jiān)聽器的使用

一、ServletRequestListener監(jiān)聽器的作用用于監(jiān)聽ServletRequest對象的創(chuàng)建和銷毀

二蔑歌、ServletRequest對象的創(chuàng)建和銷毀創(chuàng)建:從客戶端向服務(wù)器發(fā)送一次請求羹应,服務(wù)器就會創(chuàng)建Request對象銷毀:服務(wù)器對這次請求作出了響應(yīng)之后,Request對象就銷毀了

三次屠、ServletRequestListener監(jiān)聽器的方法

1园匹、監(jiān)聽ServletRequest對象的創(chuàng)建requestInitialized(ServletRequestEvent sre)

2、監(jiān)聽ServletRequest對象的銷毀requestDestroyed(ServletRequestEvent sre)

四劫灶、編寫監(jiān)聽器代碼

1裸违、監(jiān)聽器代碼

2、監(jiān)聽器配置

3本昏、問題:訪問HTML頁面是否創(chuàng)建請求對象供汛?會訪問JSP頁面是否創(chuàng)建請求對象?會訪問Servlet是否創(chuàng)建請求對象涌穆?會

(七)統(tǒng)計當(dāng)前在線人數(shù)的案例

一紊馏、案例分析在服務(wù)器啟動的時候需要有一個初始值為零。當(dāng)瀏覽器訪問服務(wù)器上的某個JSP了蒲犬,就會創(chuàng)建Session,此時獲取初始值岸啡,進(jìn)行+1操作。如果Session銷毀了,獲取該值進(jìn)行-1操作

二蛤奢、代碼實現(xiàn)

1俭驮、創(chuàng)建ServletContextListener進(jìn)行初始化

2、創(chuàng)建HttpSessionListener

3悦荒、配置監(jiān)聽器

4唯欣、創(chuàng)建JSP頁面

(八)監(jiān)聽三個域?qū)ο蟮膶傩宰兏谋O(jiān)聽器

一、三類監(jiān)聽器

1搬味、ServletContextAttributeListener監(jiān)聽ServletContext對象中的屬性變更(屬性添加境氢、移除蟀拷、替換)的監(jiān)聽器attributeAdded(ServletContextAttributeEvent event)attributeRemoved(ServletContextAttributeEvent event)attributeReplaced(ServletContextAttributeEvent event)

2、HttpSessionAttributeListener監(jiān)聽HttpSession對象中的屬性變更(屬性添加萍聊、移除问芬、替換)的監(jiān)聽器attributeAdded(HttpSessionBindingEvent event)attributeRemoved(HttpSessionBindingEvent event)attributeReplaced(HttpSessionBindingEvent event)

3、ServletRequestAttributeListener監(jiān)聽ServletRequest對象中的屬性變更(屬性添加寿桨、移除此衅、替換)的監(jiān)聽attributeAdded(ServletRequestAttributeEvent srae)attributeRemoved(ServletRequestAttributeEvent srae)attributeReplaced(ServletRequestAttributeEvent srae)

二、演示第二類監(jiān)聽器

1亭螟、演示HttpSessionAttributeListener

2挡鞍、配置監(jiān)聽器

3、編寫測試的JSP

(九)監(jiān)聽HttpSession中Java類狀態(tài)改變的監(jiān)聽器

一预烙、第三類監(jiān)聽器概述

1墨微、保存在Session域中的Java類可以有多種狀態(tài):綁定到Session中、從Session中解除綁定默伍、隨Session對象持久化到一個存儲設(shè)備中(鈍化)欢嘿、隨Session對象從一個存儲設(shè)備中恢復(fù)(活化)

2、Servlet規(guī)范中中定義了兩個特殊的監(jiān)聽的接口也糊,來幫助Java類了解自己在Session域中的狀態(tài)炼蹦,分別是:HttpSessionBindingListener接口HttpSessionActivationListener接口實現(xiàn)了這兩接口的類,是不需要在web.xml中進(jìn)行配置的

二狸剃、HttpSessionBindingListener監(jiān)聽器

1掐隐、監(jiān)聽Java類在HttpSession中的綁定和解除綁定的狀態(tài)的監(jiān)聽器

valueBound(HttpSessionBindingEvent event)

valueUnbound(HttpSessionBindingEvent event)

2、測試代碼

三钞馁、HttpSessionActivationListener監(jiān)聽器

1虑省、監(jiān)聽HttpSession中Java類的鈍化和活化的監(jiān)聽器

sessionDidActivate(HttpSessionEvent se)

sessionWillPassivate(HttpSessionEvent se)

2、測試代碼

3僧凰、配置完成Session的序列化和反序列化Context標(biāo)簽可以配置在:Tomcat/conf/context.xml:所有Tomcat下虛擬主機和虛擬目錄下的工程都會序列化SessionTomcat/conf/Catalina? ?/local host/context.xml:只有l(wèi)ocal host虛擬主機下的所有項目會序列化Session工程/META-INF/context.xml:只有當(dāng)前工程才會序列化Sessio

(十)Filter

一探颈、Filter的概述

1、什么是FilterFilter稱為過濾器训措,它是Servlet技術(shù)中最實用的技術(shù)伪节,Web開發(fā)人員通過Filter技術(shù),對Web服務(wù)器所管理的資源(JSP绩鸣、Servlet怀大、靜態(tài)圖片、靜態(tài)html文件等)進(jìn)行攔截呀闻,從而實現(xiàn)一些特殊的功能Filte就是過濾從客戶端向服務(wù)器發(fā)送請求

2化借、為什么學(xué)習(xí)過濾器

二、Filter的入門

1捡多、第一步:編寫一個類實現(xiàn)Filter接口

2蓖康、第二步:對過濾器進(jìn)行配置

三铐炫、FilterC hain對象的概述

1、什么是FilterC hainFilterC hain過濾器鏈:在一個Web應(yīng)用中钓瞭,可以開發(fā)編寫多個Filter驳遵,這些Filter組合起來稱為是一個過濾器鏈Web服務(wù)器根據(jù)Filter在web.xml件中的注冊順序(mapping的配置順序)決定先調(diào)用哪個Filter,依次調(diào)用后面的過濾器山涡,如果沒有下一個過濾器堤结,則調(diào)用目標(biāo)資源

2、FilterC hain的演示

四鸭丛、Filter的生命周期

1竞穷、Filter的生命周期描述Filter的創(chuàng)建和銷毀是由web服務(wù)器負(fù)責(zé)。Web應(yīng)用程序啟動的時候鳞溉,Web服務(wù)器建Filter的實例對象瘾带,并調(diào)用其init方法進(jìn)行初始化的操作(Filter對象只會創(chuàng)建一次,ini方法也只會執(zhí)行一次)每次Filter進(jìn)行攔截的時候熟菲,都會執(zhí)行doFilter的方法當(dāng)服務(wù)器關(guān)閉的時候看政,或者應(yīng)用從服務(wù)器中移除的時候,服務(wù)器會銷Filter對象

2抄罕、FilterCon? ?fig對象的概述

(1)FilterCon? ?fi對象的作用:用來獲得Filter的相關(guān)的配置的對象

(2)FilterCon? ?fig對象的APIgetFilterName()getInitParameter(Stringname)getInitParameterNames()getServletContext()

3允蚣、FilterCon? ?fig的演示

五、過濾器的相關(guān)配置

1呆贿、<url-pattern >的配置完全路徑匹配:以/開始嚷兔,例如/aaa/aabbb目錄匹配:以/開始,例如/*/aaa/*/aaa/bbb/*擴展名匹配:不能以/開始做入,以*開始冒晰,例如*.jsp *.do*.action

2、<servlet -name>的配置專門以Servlet的配置的名稱攔截Servlet

3竟块、<dispatc her>的配置默認(rèn)的情況下壶运,過濾器會攔截請求,如果進(jìn)行轉(zhuǎn)發(fā)(需要攔截這次轉(zhuǎn)發(fā))dispatc her的取值有四個:REQUEST:默認(rèn)值浪秘。默認(rèn)過濾器攔截的就是請求FORWARD:轉(zhuǎn)發(fā)INCLUDE:頁面包含的時候進(jìn)行攔截ERROR:頁面出現(xiàn)全局錯誤頁面跳轉(zhuǎn)的時候進(jìn)行攔截

(十一)權(quán)限驗證過濾器

一前弯、案例需求現(xiàn)在一個網(wǎng)站上需要有登錄的功能,在登錄成功后秫逝,重定向到后臺的成功頁面(后臺的頁面有很多)。如果現(xiàn)在沒有登錄询枚,直接在地址欄上輸入后臺頁面地址編寫一個過濾器违帆,可以對沒有登錄的用戶進(jìn)行攔截(沒有登錄,回到登錄頁面金蜀;如果已經(jīng)登錄刷后,放行)

二的畴、案例登錄功能

1、創(chuàng)建表(MySQL執(zhí)行如下語句)create databaseweb05charset utf8;use web05;create table user(id int primarykey auto _increment,userna me varchar(20),password varchar(20))charset ut f8;insert into user values (null,'aaa','123');

2尝胆、搭建項目的環(huán)境

3丧裁、代碼實現(xiàn)

三、權(quán)限驗證的過濾器實現(xiàn)

(十二)通用的字符集編碼過濾器的分析

一含衔、案例需求假設(shè)網(wǎng)站需要向后臺提交中文的數(shù)據(jù)(有可能是GET煎娇,也有可能是POST),中文處理根據(jù)不同的請求方式贪染,處理的方式也是不同的需要調(diào)用request.getParameter() ;方法接收數(shù)據(jù)缓呛,但是這時會存在亂碼,如果想調(diào)用request.getParameter()方法杭隙,無論是get還是post請求哟绊,提交的中文都沒有亂

二、增強一個類的方法

1痰憎、通過上面的分析票髓,現(xiàn)在要增強request的getParameter方法,增強的過程要寫在過濾器當(dāng)中

(1)如何增強一個類中的方法铣耘?

1)繼承必須要能夠控制這個類的構(gòu)造

2)裝飾者被增強的類和增強的類需要實現(xiàn)相同的接口在增強的類中獲得被增強的類的引用缺點:接口中的方法過多洽沟,會導(dǎo)致要重寫很多其他的方法

3)動態(tài)代理類需要實現(xiàn)接口

三、通用的字符集編碼過濾器的代碼實現(xiàn)

1涡拘、過濾器的代碼

2玲躯、增強類的代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鳄乏,隨后出現(xiàn)的幾起案子跷车,更是在濱河造成了極大的恐慌,老刑警劉巖橱野,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朽缴,死亡現(xiàn)場離奇詭異,居然都是意外死亡水援,警方通過查閱死者的電腦和手機密强,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜗元,“玉大人或渤,你說我怎么就攤上這事∞瓤郏” “怎么了薪鹦?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我池磁,道長奔害,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任地熄,我火速辦了婚禮华临,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘端考。我一直安慰自己雅潭,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布跛梗。 她就那樣靜靜地躺著寻馏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪核偿。 梳的紋絲不亂的頭發(fā)上诚欠,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機與錄音漾岳,去河邊找鬼轰绵。 笑死,一個胖子當(dāng)著我的面吹牛尼荆,可吹牛的內(nèi)容都是我干的左腔。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼捅儒,長吁一口氣:“原來是場噩夢啊……” “哼液样!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巧还,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤鞭莽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后麸祷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澎怒,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年阶牍,在試婚紗的時候發(fā)現(xiàn)自己被綠了喷面。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡走孽,死狀恐怖惧辈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情磕瓷,我是刑警寧澤盒齿,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響县昂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜陷舅,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一倒彰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧莱睁,春花似錦待讳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至南吮,卻和暖如春琳彩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背部凑。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工露乏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涂邀。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓瘟仿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親比勉。 傳聞我的和親對象是個殘疾皇子劳较,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,566評論 2 349

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

  • 監(jiān)聽器(listener) 監(jiān)聽器簡介 :監(jiān)聽器就是一個實現(xiàn)特定接口的普通java程序,這個程序?qū)iT用于監(jiān)聽另一個...
    奮斗的老王閱讀 2,500評論 0 53
  • IOC 控制反轉(zhuǎn)容器控制程序?qū)ο笾g的關(guān)系浩聋,而不是傳統(tǒng)實現(xiàn)中观蜗,有程序代碼之間控制,又名依賴注入赡勘。All 類的創(chuàng)建嫂便,...
    irckwk1閱讀 934評論 0 0
  • (三)Servlet中的監(jiān)聽器 一、Servlet中的監(jiān)聽器簡介 在Servlet中定義了多種類型的監(jiān)聽器闸与,它...
    你養(yǎng)豬嗎閱讀 219評論 0 0
  • 這部分主要是與Java Web和Web Service相關(guān)的面試題毙替。 96、闡述Servlet和CGI的區(qū)別? 答...
    雜貨鋪老板閱讀 1,400評論 0 10
  • 本文包括:1践樱、Listener簡介2厂画、Servlet監(jiān)聽器3、監(jiān)聽三個域?qū)ο髣?chuàng)建和銷毀的事件監(jiān)聽器4拷邢、監(jiān)聽三個域?qū)?..
    廖少少閱讀 6,043評論 6 28