如何在人员登陆的时候统计在线的人数,在线的人员以高亮显示,不在线以灰色显示
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;
}
}
这段代码只能统计正常的上线下线的情况,如果会话过期或者非法关闭浏览器就统计错误了,我有两种想法,一是通过数据库去统计,当人员登陆的时候或者不在线时,去修改数据库表中的状态,这样会不会在性能上有影响?还有一个是通过session去实现,但这个状态如何去控制呢?希望给点建议~
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;
}
}
这段代码只能统计正常的上线下线的情况,如果会话过期或者非法关闭浏览器就统计错误了,我有两种想法,一是通过数据库去统计,当人员登陆的时候或者不在线时,去修改数据库表中的状态,这样会不会在性能上有影响?还有一个是通过session去实现,但这个状态如何去控制呢?希望给点建议~
然后通过记录 session 事件, 来写入和踢出在线与不在线的人