Java实现在线用户显示(一)

2014-11-24 03:29:15 · 作者: · 浏览: 1

OnlineUser
[java]
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

/**
* 在线用户统计
*/
public class OnlineUsers implements HttpSessionBindingListener {

private Map users = new HashMap();

private static OnlineUsers onlineUsers = new OnlineUsers();

public static OnlineUsers getInstance() {
return onlineUsers;
}

/**
* @return
*/
public Collection getUsers() {
return users.values();
}

public void addUser(OnlineUser user) {
users.put(user.getId(), user);
}

public void removeUser(String userId) {
users.remove(userId);
}

/**
* 对象实例(即OnlineUserListener的实例)作为一个属性被设置到session的
* 时候,会调用本方法,这种情况一般发生在点击登录按钮以后的处理过程中 设置
*
* @see javax.servlet.http.HttpSessionBindingListener#valueBound(javax.servlet.http.HttpSessionBindingEvent)
*/
public void valueBound(HttpSessionBindingEvent event) {
// 现在暂时不需要额外处理,你可以在这里记录日志等
}

/**
* 当Session超时,或本实例被从session中移除的时候被调用,这种情况一般 发生在注销方法的处理过程中
*
* @see javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet.http.HttpSessionBindingEvent)
*/
public void valueUnbound(HttpSessionBindingEvent event) {
try {
HttpSession session = event.getSession();
OnlineUser u = (OnlineUser) session.getAttribute("currentUser");
System.out.println("删除用户:"+u.getName());
this.removeUser(u.getId());
} catch (RuntimeException e) {
e.printStackTrace();
// throw e;
}

}

}
OnlineUserListener
[java]
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
* 在线用户监听
*/
public class OnlineUserListener implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent event) {
OnlineUser u = new OnlineUser();
System.out.println("你登录网站========="+u.getId());
u.setName("---");
u.setId(event.getSession().getId());
event.getSession().setAttribute("currentUser",u);
OnlineUsers.getInstance().addUser(u);
}

public void sessionDestroyed(HttpSessionEvent event) {
System.out.println("删除用户:"+event.getSession().getAttribute("currentUser"));
OnlineUsers.getInstance().removeUser(event.getSession().getId());
}
}

OnlineUsers


[java]
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

/**
* 在线用户统计
* author:
*/
public class OnlineUsers implements HttpSessionBindingListener {

private Map users = new HashMap();

private static OnlineUsers onlineUsers = new OnlineUsers();

public static OnlineUsers getInstance() {
return onlineUsers;
}

/**
* @return
*/
public Collection getUsers() {
return users.values();
}

public void addUser(OnlineUser user) {
users.put(user.getId(), user);
}