JSP显示网站在线人数,是怎么编的?谈谈思想
发布网友
发布时间:2022-04-22 08:20
我来回答
共2个回答
热心网友
时间:2022-04-22 09:49
首先, 这个东西是无法做得准确的, 因为人家把电脑一关或是突然断电了你都没办法统计进来, 所以只能是个大致的人数统计.
用J2EE平台解决这个问题一般有两种方法:
1、使用数据库来做, 每登录进来一个用户就往数据库中存放一条记录或是改变一下在线人数, 每退出一个用户反之, 然后JSP中读数据库中的信息即可.
2、使用HttpSessionListener来实现,写一个类实现HttpSessionListener接口,在sessionCreated方法中增加在线用户数,在sessionDestroyed方法中减少在线用户数即可。
我个人认为第二种办法更为优雅一些。
示例代码如下:
public class MySessionListener implements HttpSessionListener {
/**
* @param e
* @author chinakite zhang
* @version 1.0
* <pre>
* Created on :Apr 29, 2005 10:28:04 AM
* LastModified:
* History:
* </pre>
*/
public void sessionCreated(HttpSessionEvent e) {
OnlineCounter.raise();
}
/**
* @param e
* @author chinakite zhang
* @version 1.0
* <pre>
* Created on :Apr 29, 2005 10:28:04 AM
* LastModified:
* History:
* </pre>
*/
public void sessionDestroyed(HttpSessionEvent e) {
OnlineCounter.rece();
}
}
/**
* 单例的计数器
*/
public class OnlineCounter implements Serializable {
/*
* 在线人数
*/
private static int online = 0;
/**
* 获得在线人数
* @return
* @author chinakite zhang
* @version 1.0
* <pre>
* Created on :Jul 7, 2005 9:22:38 AM
* LastModified:
* History:
* </pre>
*/
public static int getOnline(){
return online;
}
/**
* 在线人数增1
*
* @author chinakite zhang
* @version 1.0
* <pre>
* Created on :Jul 7, 2005 9:22:50 AM
* LastModified:
* History:
* </pre>
*/
public static void raise(){
if(online < 0){
online = 0;
}
online++;
}
/**
* 在线人数减1
*
* @author chinakite zhang
* @version 1.0
* <pre>
* Created on :Jul 7, 2005 9:23:09 AM
* LastModified:
* History:
* </pre>
*/
public static void rece(){
online--;
}
}
希望我的回答对你能有所帮助
热心网友
时间:2022-04-22 11:07
HttpSessionListener统计在线人数
用一个类去监听他,代码实现如下
/**
* 编写以下SessionCounter.java
* 并编译为SessiionCounter.class
* 然后放到你的网站的classpath的
* SessionCount(自己建立此目录)下面
*/
package SessionCount;
import javax.servlet.*;
import javax.servlet.http.*;
public class SessionCounter implements HttpSessionListener {
private static int activeSessions = 0;
public void sessionCreated(HttpSessionEvent se) {
activeSessions++;
}
public void sessionDestroyed(HttpSessionEvent se) {
if(activeSessions > 0)
activeSessions--;
}
public static int getActiveSessions() {
return activeSessions;
}
}
接着建立online.jsp文件用于显示在线人数
在线:
然后需要在你的网站的WEB-INF中建立web.xml
文件内容如下:
<!-- Web.xml -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.3.dtd">
<web-app>
<!-- Listeners -->
<listener>
<listener-class>
SessionCount.SessionCounter
</listener-class>
</listener>
</web-app>