監(jiān)聽器是一個(gè)專門用于對其他對象身上發(fā)生的事件或狀態(tài)改變進(jìn)行監(jiān)聽和相應(yīng)處理的對象,當(dāng)被監(jiān)視的對象發(fā)生情況時(shí)泼掠,立即采取相應(yīng)的行動怔软。監(jiān)聽器其實(shí)就是一個(gè)實(shí)現(xiàn)特定接口的普通java程序,這個(gè)程序?qū)iT用于監(jiān)聽另一個(gè)java對象的方法調(diào)用或?qū)傩愿淖兾渎常?dāng)被監(jiān)聽對象發(fā)生上述事件后爽雄,監(jiān)聽器某個(gè)方法立即被執(zhí)行。
上述概念設(shè)計(jì)到3個(gè)名詞概念:
- 1.事件源:即誰產(chǎn)生的事件
- 2.事件對象:即產(chǎn)生了什么事件
- 3.監(jiān)聽器:監(jiān)聽事件源的動作
由于事件源可以產(chǎn)生多個(gè)動作(即產(chǎn)生多個(gè)事件)沐鼠,而監(jiān)聽器中的每一個(gè)方法監(jiān)聽一個(gè)動作挚瘟,故每個(gè)監(jiān)聽器中都有很多方法。
1.JavaWeb中的監(jiān)聽器
1.1概念
JavaWeb中的監(jiān)聽器是Servlet規(guī)范中定義的一種特殊類饲梭,它用于監(jiān)聽web應(yīng)用程序中的ServletContext乘盖、HttpSession和 ServletRequest這三大域?qū)ο蟮膭?chuàng)建、銷毀事件以及監(jiān)聽這些域?qū)ο笾械膶傩园l(fā)生修改的事件憔涉。
1.2JavaWeb中監(jiān)聽器的分類
在Servlet規(guī)范中定義了多種類型的監(jiān)聽器(一共8個(gè)監(jiān)聽器)订框,它們用于監(jiān)聽的事件源分別為ServletContext,HttpSession和ServletRequest這三個(gè)域?qū)ο蠖颠丁ervlet規(guī)范針對這三個(gè)對象上的操作穿扳,又把多種類型的監(jiān)聽器劃分為三種類型:
- 1.域?qū)ο蟮纳芷诒O(jiān)聽:監(jiān)聽域?qū)ο笞陨淼膭?chuàng)建和銷毀。這個(gè)監(jiān)聽器需要實(shí)現(xiàn)相應(yīng)的監(jiān)聽器接口:ServletContextListener国旷、HttpSessionListener矛物、ServletRequestListener。
- 2.域?qū)ο蟮膶傩员O(jiān)聽:監(jiān)聽域?qū)ο笾袑傩缘脑黾雍蛣h除跪但。這個(gè)監(jiān)聽器需要實(shí)現(xiàn)的監(jiān)聽器接口為:ServletContextAttributeListener履羞、HttpSessionAttributeListener、ServletRequestAttributeListener
- 3.感知監(jiān)聽(都與HttpSession域?qū)ο笥嘘P(guān)):監(jiān)聽綁定到HttpSession域中的某個(gè)JavaBean對象的狀態(tài)的監(jiān)聽器屡久。這個(gè)監(jiān)聽器需要實(shí)現(xiàn)的監(jiān)聽器接口:HttpSessionBindingListener忆首、HttpSessionActiveationListener.
1.3第一類:域?qū)ο蟮纳芷诒O(jiān)聽
- 事件源為:三大域
- 事件對象為:創(chuàng)建與銷毀
- 監(jiān)聽器為:實(shí)現(xiàn)了ServletContextListener、HttpSessionListener被环、ServletRequestListener這三個(gè)接口的監(jiān)聽器