Java Web應(yīng)用開發(fā)項(xiàng)目教程 課件 第八章 使用監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)_第1頁
Java Web應(yīng)用開發(fā)項(xiàng)目教程 課件 第八章 使用監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)_第2頁
Java Web應(yīng)用開發(fā)項(xiàng)目教程 課件 第八章 使用監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)_第3頁
Java Web應(yīng)用開發(fā)項(xiàng)目教程 課件 第八章 使用監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)_第4頁
Java Web應(yīng)用開發(fā)項(xiàng)目教程 課件 第八章 使用監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論