jsp中如何用application实现在线用户的管理

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:04:26
现在要做一个小系统的用户管理系统,对于如何用application对象管理在线用户有些不知从何下手。
我初步的设想是,每一个用户登陆后,都向application对象注册自己,并在logout的时候通知application对象。这样的话,管理员进入自己的界面,就可以知道哪些用户是登陆的,哪些是没登陆的,而登陆的用户是不能被修改或删除的。
但是这里就有一个问题,如果用户不执行登出操作,而是直接关闭浏览器,那application中的用户信息岂不是得一直保持在哪里了?不知道哪位兄者知道这个问题怎么解决?
能在web.xml里添加多个listener么?现在已经有一个spring的listener了。

可以使用Session的监听来检测用户在线离线情况:
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
public class UserListener implements HttpSessionListener {
private static HashMap activeUsers = new HashMap();
/* Session创建事件 */
public void sessionCreated(HttpSessionEvent ev) {
activeUsers.put(ev.getSession().getAttribute("userKey"),ev.getSession().getAttribute("userName"));
}
/* Session失效事件 */
public void sessionDestroyed(HttpSessionEvent ev) {
activeUsers.remove(ev.getSession().getAttribute("userKey"));
}

public static HashMap getActiveUsers() {
return activeUsers;
}
}

----------------------------------
web.xml中加入:
<listener>
<listener-class>
com.yourCompany.listener.UserListener
</listener-class>
</listener>

------------------------
listener可以有多个 ,不同的listener有不同