全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)技術(shù)文章正文

什么是Servlet事件監(jiān)聽(tīng)?

更新時(shí)間:2021-10-28 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

在程序開(kāi)發(fā)中,經(jīng)常需要對(duì)某些事件進(jìn)行監(jiān)聽(tīng),加監(jiān)聽(tīng)鼠標(biāo)單擊事件、監(jiān)聽(tīng)按鍵事件等,此時(shí)就需要使用事件監(jiān)聽(tīng)器,事件監(jiān)聽(tīng)器用干對(duì)程序中發(fā)生的事件進(jìn)行監(jiān)聽(tīng),在監(jiān)聽(tīng)的過(guò)程中會(huì)涉及幾個(gè)重要組成部分,具體如下。

(1) 事件(Event):用戶(hù)的一個(gè)操作,如單擊一個(gè)按鈕、調(diào)用一個(gè)方法、創(chuàng)建一個(gè)對(duì)象等。

(2) 事件源:產(chǎn)生事件的對(duì)象。

(3) 事件監(jiān)聽(tīng)器(Listener):負(fù)責(zé)監(jiān)聽(tīng)發(fā)生在事件源上的事件。

(4) 事件處理器:監(jiān)聽(tīng)器的成員方法,當(dāng)事件發(fā)生的時(shí)候會(huì)觸發(fā)對(duì)應(yīng)的處理器(成員方法)。

當(dāng)用戶(hù)進(jìn)行一個(gè)操作觸發(fā)事件源上的事件時(shí),就會(huì)被事件監(jiān)聽(tīng)器監(jiān)聽(tīng)到,當(dāng)監(jiān)聽(tīng)器監(jiān)聽(tīng)到事件發(fā)生時(shí),相應(yīng)的事件處理器就會(huì)對(duì)發(fā)生的事件進(jìn)行處理。

1635389977434_Servlet.png

事件監(jiān)聽(tīng)器在進(jìn)行工作時(shí),可分為幾個(gè)步驟,具體如下。

(1)將監(jiān)聽(tīng)器綁定到事件源,也就是注冊(cè)監(jiān)聽(tīng)器。

(2)事件發(fā)生時(shí)會(huì)觸發(fā)監(jiān)聽(tīng)器的成員方法,即事件處理器,傳遞事件對(duì)象。

(3)事件處理器通過(guò)事件對(duì)象獲得事件源,并對(duì)事件源進(jìn)行處理。

在開(kāi)發(fā) Web應(yīng)用程序時(shí),也經(jīng)常會(huì)使用事件監(jiān)聽(tīng)器,這個(gè)事件監(jiān)聽(tīng)器被稱(chēng)為Servlet事件監(jiān)聽(tīng)器,Servlet事件監(jiān)聽(tīng)器就是一個(gè)實(shí)現(xiàn)特定接口的Java程序,專(zhuān)門(mén)用于監(jiān)聽(tīng)Web應(yīng)用程序中ServletContext、 HttpSession和ServletRequest等域?qū)ο蟮膭?chuàng)建和銷(xiāo)毀過(guò)程,監(jiān)聽(tīng)這些域?qū)ο髮傩缘男薷囊约案兄壎ǖ紿ttpSession域中某個(gè)對(duì)象的狀態(tài)。根據(jù)監(jiān)聽(tīng)事件的不同可以將其分為三類(lèi),具體如下。

(1)用于監(jiān)聽(tīng)域?qū)ο髣?chuàng)建和銷(xiāo)毀的事件監(jiān)聽(tīng)(ServlefContextListener接口、HttpSessionListener按口、ServletRequestListener接口)。

(2)用于監(jiān)聽(tīng)域?qū)ο髮傩栽黾雍蛣h除的事件監(jiān)聽(tīng)器(ServletContextAttributeListener接口、HttpSessionAttributeListener接口、ServletRequestAttributeListener接口)。

(3)用于監(jiān)聽(tīng)綁定到HttpSession域中某個(gè)對(duì)象狀態(tài)的事件監(jiān)聽(tīng)器(HttpSessionBindingListener接口、HttpSessionActivationListener接口)。

在Servlet規(guī)范中,這三類(lèi)事件監(jiān)聽(tīng)器都定義了相應(yīng)的接口,在編寫(xiě)事件監(jiān)聽(tīng)器程序時(shí)只需實(shí)現(xiàn)對(duì)應(yīng)的接口就可以。Web服務(wù)器會(huì)根據(jù)監(jiān)聽(tīng)器所實(shí)現(xiàn)的接口,把它注冊(cè)到被監(jiān)聽(tīng)的對(duì)象上,當(dāng)觸發(fā)了某個(gè)對(duì)象的監(jiān)聽(tīng)事件時(shí),Web容器將會(huì)調(diào)用Servlet監(jiān)聽(tīng)器與之相關(guān)的方法對(duì)事件進(jìn)行處理。


猜你喜歡

Servlet對(duì)象的生命周期詳細(xì)介紹

黑馬程序員Java高手班課程

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!