本文實(shí)例為大家分享了java監(jiān)聽器實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)的具體代碼,供大家參考,具體內(nèi)容如下
1.在工程中創(chuàng)建監(jiān)聽類SessionListener 并且實(shí)現(xiàn)HttpSessionListener接口,代碼如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class SessionListener implements HttpSessionListener { private static int count = 0 ; public void sessionCreated(HttpSessionEvent se) { count++; System.out.println( "session創(chuàng)建:" + new java.util.Date()); } public void sessionDestroyed(HttpSessionEvent se) { count--; System.out.println( "session銷毀:" + new java.util.Date()); } public static int getCount() { return count; } } |
2.配置web.xml
1
2
3
4
|
< listener > < description >session監(jiān)聽器</ description > < listener-class >com.xxx.SessionListener</ listener-class > </ listener > |
3.在JSP頁面中顯示在線人數(shù)
1
2
3
4
|
<% int count=com.xxx.SessionListener.getCount(); out.println("在線人數(shù):"+count); %> |
注意:servlet中對(duì)session的監(jiān)聽有很多接口,功能很靈活,最常用的是監(jiān)聽Session和Attribute。這里要澄清一下概念,servlet中的session監(jiān)聽和Attribute監(jiān)聽含義有差別,session監(jiān)聽指的不是我們一般所理解的放置一個(gè)session或者銷毀一個(gè)session,這是Attribute監(jiān)聽的功能,因?yàn)閟ervlet中放置session的語法是session.setAttribute(“session名”,要放入的對(duì)象)。而session監(jiān)聽,監(jiān)聽的是HTTP連接,只要有用戶與server連接,就算連接的是一個(gè)空白的jsp頁面,也會(huì)觸發(fā)session事件,所以此處的session實(shí)際上指的是connection,用來統(tǒng)計(jì)當(dāng)前在線用戶數(shù)最合適了。
這種實(shí)現(xiàn)在線人數(shù)統(tǒng)計(jì)的方法是不是很特別,希望這篇文章對(duì)大家的學(xué)習(xí)有所幫助,有所啟發(fā)。