版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaWeb應(yīng)用開發(fā)計(jì)算機(jī)與軟件學(xué)院
第8章使用監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■本章要點(diǎn):
Servlet監(jiān)聽器開發(fā)技術(shù)在線人數(shù)統(tǒng)計(jì)功能模塊設(shè)計(jì)與實(shí)現(xiàn)Servlet監(jiān)聽器技術(shù)特性分析Servlet監(jiān)聽器的典型應(yīng)用8.1使用Servlet監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■在線人數(shù)統(tǒng)計(jì)功能分析在系統(tǒng)運(yùn)行過程中,了解當(dāng)前使用系統(tǒng)的用戶,有多少人在使用系統(tǒng)?具體又是哪些人在使用系統(tǒng)?實(shí)現(xiàn):session監(jiān)聽器javax.servlet.http.HttpSessionListener接口ServletContext監(jiān)聽器javax.servlet.ServletContextListener接口8.1使用Servlet監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■Servlet監(jiān)聽器實(shí)現(xiàn)
第一步:創(chuàng)建監(jiān)聽器類OnlineCount.java,通過NEW命令創(chuàng)建一個(gè)Class文件,準(zhǔn)備實(shí)現(xiàn)ServletContextListener、HttpsessionListener接口的監(jiān)聽處理器類8.1使用Servlet監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■Servlet監(jiān)聽器實(shí)現(xiàn)
生成處理器類代碼如下:publicclassOnlineCountimplementsServletContextListener,HttpSessionListener{publicvoidcontextInitialized(ServletContextEventsce){
//應(yīng)用程序初始化時(shí)啟動(dòng)}publicvoidcontextDestroyed(ServletContextEventsce){//應(yīng)用程序卸載時(shí)啟動(dòng)}publicvoidsessionCreated(HttpSessionEventse){//當(dāng)有用戶訪問時(shí)啟動(dòng)}publicvoidsessionDestroyed(HttpSessionEventse){//當(dāng)有用戶退出時(shí)啟動(dòng)}}8.1使用Servlet監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■Servlet監(jiān)聽器實(shí)現(xiàn)
第二步:為監(jiān)聽行為添加代碼:
1)為用戶訪問監(jiān)聽行為添加代碼:publicvoidsessionCreated(HttpSessionEventse){HttpSessionsession=se.getSession();ServletContextcontext=session.getServletContext();Integercounter=(Integer)context.getAttribute("counter");counter=newInteger(Value()+1);//在線人數(shù)增1context.setAttribute("counter",counter);}8.1使用Servlet監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■Servlet監(jiān)聽器實(shí)現(xiàn)
第二步:為監(jiān)聽行為添加代碼:2)為用戶退出監(jiān)聽行為添加代碼:publicvoidsessionDestroyed(HttpSessionEventse){HttpSessionsession=se.getSession();ServletContextcontext=session.getServletContext();Integercounter=(Integer)context.getAttribute("counter");counter=newInteger(Value()-1);//在線人數(shù)減1context.setAttribute("counter",counter);}8.1使用Servlet監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■Servlet監(jiān)聽器實(shí)現(xiàn)
第二步:為監(jiān)聽行為添加代碼:3)為應(yīng)用程序初始化添加代碼:publicvoidcontextInitialized(ServletContextEventsce){ServletContextcontext=sce.getServletContext();Integercounter=newInteger(0);context.setAttribute("counter",counter);//初始化在線人數(shù)計(jì)數(shù)器}8.1使用Servlet監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■Servlet監(jiān)聽器實(shí)現(xiàn)
第二步:為監(jiān)聽行為添加代碼:4)為應(yīng)用程序卸載添加代碼:publicvoidcontextDestroyed(ServletContextEventsce){ServletContextcontext=sce.getServletContext();context.removeAttribute("counter");//刪除在線人數(shù)計(jì)數(shù)器}8.1使用Servlet監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■Servlet監(jiān)聽器實(shí)現(xiàn)
第三步:將session監(jiān)聽器配置到web.xml配置文件中:…<listener><listener-class>our.OnlineCount</listener-class></listener>…8.1使用Servlet監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■Servlet監(jiān)聽器實(shí)現(xiàn)
第四步:顯示在線用戶的監(jiān)聽結(jié)果在需要顯示的JSP頁面frameLeft.jsp中加入如下代碼:<td><fontcolor=“orange”>在線人數(shù)
<%if(application.getAttribute("counter")!=null){%><%=application.getAttribute("counter")%><%}else{%>1<%}%></font></td>8.1使用Servlet監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)■Servlet監(jiān)聽器實(shí)現(xiàn)
顯示效果如下圖所示:8.1.3Servlet監(jiān)聽器技術(shù)特性分析■Servlet事件監(jiān)聽器簡(jiǎn)介與Java的GUI事件監(jiān)聽器類似 按監(jiān)聽的對(duì)象劃分:
1.監(jiān)聽?wèi)?yīng)用程序環(huán)境對(duì)象(ServletContext)事件
2.監(jiān)聽用戶會(huì)話對(duì)象(HttpSession)事件
3.監(jiān)聽請(qǐng)求對(duì)象(ServletRequest)事件按監(jiān)聽的事件類劃分:
1.用于監(jiān)聽對(duì)象自身的創(chuàng)建和銷毀的事件監(jiān)聽器
2.用于監(jiān)聽對(duì)象中的屬性的增加和刪除的事件監(jiān)聽器
3.用于監(jiān)聽綁定到HttpSession中的某個(gè)對(duì)象的狀態(tài)的事件監(jiān)聽器8.1.3Servlet監(jiān)聽器技術(shù)特性分析■監(jiān)聽對(duì)象的創(chuàng)建、屬性和改變和銷毀
在一個(gè)web應(yīng)用程序的整個(gè)運(yùn)行周期內(nèi),web容器會(huì)創(chuàng)建和銷毀三個(gè)重要的對(duì)象,ServletContext,HttpSession,ServletRequest。在servlet2.4規(guī)范中定義了三個(gè)接口:
●ServletContextListener●HttpSessionListener●ServletRequestListener
8.1.3Servlet監(jiān)聽器技術(shù)特性分析■監(jiān)聽對(duì)象的創(chuàng)建、屬性和改變和銷毀
1.在ServletContextListener接口:publicvoidcontextInitialized(ServletcontextEventsce)
應(yīng)用程序部署時(shí)激發(fā);可以通過事件對(duì)象參數(shù)獲得當(dāng)前被創(chuàng)建的ServletContext對(duì)象publicvoidcontextDestroyed(ServletContextEventsce)
應(yīng)用程序卸載時(shí)激發(fā);可以通過事件對(duì)象參數(shù)獲得當(dāng)前被卸載的ServletContext對(duì)象。8.1.3Servlet監(jiān)聽器技術(shù)特性分析■監(jiān)聽域?qū)ο蟮膭?chuàng)建、屬性和改變和銷毀
2.在HttpSessionListneter接口:publicvoidsessionCreated(HttpSessionEventse)
創(chuàng)建一個(gè)新的Session對(duì)象時(shí)激發(fā);通過參數(shù)獲得當(dāng)前被創(chuàng)建的HttpSession對(duì)象publicvoidsessionDestroyed(HttpSessionEventse)
容器銷毀一個(gè)Session對(duì)象時(shí)激發(fā);通過參數(shù)獲得當(dāng)前被銷毀的HttpSession對(duì)象8.1.3Servlet監(jiān)聽器技術(shù)特性分析■監(jiān)聽域?qū)ο蟮膭?chuàng)建、屬性和改變和銷毀
3.在ServletRequestListener接口:publicvoidrequestInitialized(ServletRequestEventsre)容器創(chuàng)建一個(gè)新的Request請(qǐng)求對(duì)象時(shí)激發(fā);通過參數(shù)獲得當(dāng)前被創(chuàng)建的ServletRequest對(duì)象。publicvoidrequestDestroyed(ServletRequestEventsre)
容器銷毀一個(gè)Request請(qǐng)求對(duì)象時(shí)激發(fā);通過參數(shù)獲得當(dāng)前被銷毀的ServletRequest對(duì)象。8.2servlet監(jiān)聽器知識(shí)總結(jié)■Servlet監(jiān)聽器介紹
監(jiān)視和控制web應(yīng)用狀態(tài)的變化。
Servlet監(jiān)聽器是web應(yīng)用程序事件模型的一部分,當(dāng)web應(yīng)用中的某些狀態(tài)發(fā)生變化時(shí),Servlet容器將產(chǎn)生相應(yīng)的事件,此時(shí)監(jiān)聽器來接收和處理這些事件。
在Servlet2.4中有8個(gè)監(jiān)聽器,6個(gè)事件,ServletContext事件監(jiān)聽器、HTTPSession事件監(jiān)聽器和ServletRequest事件監(jiān)聽器。8.2servlet監(jiān)聽器知識(shí)總結(jié)■Servlet監(jiān)聽器8.2servlet監(jiān)聽器知識(shí)總結(jié)■Servlet上下文監(jiān)聽
1、ServletContextListener編程接口:“Web應(yīng)用程序的生命周期方法”。contextInitialized(ServletContextEventevent)
應(yīng)用程序被加載及初始化時(shí)激發(fā)contextDestoryed(ServletContextEventevent)
應(yīng)用程序被載出,即關(guān)閉時(shí)激發(fā)8.2servlet監(jiān)聽器知識(shí)總結(jié)■Servlet上下文監(jiān)聽2、ServletAttributeListener編程接口:attributeAdded(ServletContextAttributeEventevent)
如果有對(duì)象被加入Application時(shí)激發(fā)attributeReplaced(ServletContextAttributeEventevent)
如果在Application內(nèi)有對(duì)象取代另一個(gè)對(duì)象時(shí)激發(fā)attributeRemoved(ServletContextAttributeEventevent)
如果有對(duì)象被從Application移除時(shí)激發(fā)8.2servlet監(jiān)聽器知識(shí)總結(jié)■HTTP會(huì)話監(jiān)聽
1、HttpSessionListener編程接口:sessionCreated(HttpSessionEventevent)
創(chuàng)建新的Session對(duì)象時(shí)被激發(fā)。sessionDestoryed(HttpSessionEventevent)Session對(duì)象被銷毀時(shí)激發(fā)注:HttpSessionEvent類的主要方法:getSession(),可以使用此方法回傳一個(gè)Session對(duì)象。8.2servlet監(jiān)聽器知識(shí)總結(jié)■HTTP會(huì)話監(jiān)聽
2、HttpSessionAttributeListener
編程接口:attributeeAdded(HttpSessionBindingEventevent)
有對(duì)象被加入Session時(shí)激發(fā)attributeReplaced(HttpSessionBindingEventevent)
在Session,有對(duì)象取代另一個(gè)對(duì)象時(shí)激發(fā)attributeRemoved(HttpSessionBindingEventevent)
有對(duì)象從Session內(nèi)被移除時(shí)激發(fā)注:HttpSessionBindingEvent類主要有三個(gè)方法:getName()、getsession()、getValues()。8.2servlet監(jiān)聽器知識(shí)總結(jié)■HTTP會(huì)話監(jiān)聽
3、HttpBindingListener編程接口:實(shí)現(xiàn)監(jiān)聽Http會(huì)話中對(duì)象的綁定信息。唯一不需要在web.xml中設(shè)定ListenervalueBound(HttpSessionBindingEventevent)
有對(duì)象加入Session時(shí)會(huì)被自動(dòng)調(diào)用valueUnBound(HttpSessionBindingEventevent)
有對(duì)象從Session范圍內(nèi)移除時(shí)會(huì)被自動(dòng)調(diào)用8.2servlet監(jiān)聽器知識(shí)總結(jié)■HTTP會(huì)話監(jiān)聽
4、HttpSessionActivationListener編程接口:SessionDidActivate(HttpSessionEventevent) Session對(duì)象的狀態(tài)變?yōu)橛行顟B(tài)時(shí)激發(fā)SessionWillPassivate(HttpSessionEventevent) Session對(duì)象的狀態(tài)變?yōu)闊o效狀態(tài)時(shí)激發(fā)8.2servlet監(jiān)聽
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:金銀繡藝術(shù)特征及其傳承創(chuàng)新研究
- 二零二五版能源設(shè)施安全防護(hù)勞務(wù)分包協(xié)議3篇
- 二零二五版房地產(chǎn)開發(fā)經(jīng)營項(xiàng)目環(huán)境保護(hù)合同范本3篇
- 2025年常州貨運(yùn)資格證在哪里練題
- 二零二五版毛竹砍伐與林業(yè)碳交易市場(chǎng)接入合同4篇
- 2025年光伏發(fā)電項(xiàng)目投資合作合同模板4篇
- 二零二五年度出租車公司車輛融資租賃合同5篇
- 二零二五年度農(nóng)產(chǎn)品電商平臺(tái)合作協(xié)議6篇
- 2025年度智能倉儲(chǔ)物流系統(tǒng)承包經(jīng)營協(xié)議書4篇
- 二零二五年度企業(yè)信用擔(dān)保合同模板:降低融資風(fēng)險(xiǎn)2篇
- 課題申報(bào)書:GenAI賦能新質(zhì)人才培養(yǎng)的生成式學(xué)習(xí)設(shè)計(jì)研究
- 駱駝祥子-(一)-劇本
- 全國醫(yī)院數(shù)量統(tǒng)計(jì)
- 《中國香文化》課件
- 2024年醫(yī)美行業(yè)社媒平臺(tái)人群趨勢(shì)洞察報(bào)告-醫(yī)美行業(yè)觀察星秀傳媒
- 第六次全國幽門螺桿菌感染處理共識(shí)報(bào)告-
- 天津市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 經(jīng)濟(jì)學(xué)的思維方式(第13版)
- 盤錦市重點(diǎn)中學(xué)2024年中考英語全真模擬試卷含答案
- 手衛(wèi)生依從性調(diào)查表
- 湖北教育出版社四年級(jí)下冊(cè)信息技術(shù)教案
評(píng)論
0/150
提交評(píng)論