============================================================================
原创作品,允许转载。转载时请务必以超链接形式标明原始出处、以及本声明。
请注明转自:http://yunjianfei.iteye.com/blog/
============================================================================
前段时间在做在线实时聊天系统,做了不少相关的例子,最近工作比较清闲,就慢慢发上来吧,附件里的例子是一个用ajax轮询,以及单例模式的一个list来存放在线用户,用HttpSessionBindingListener来绑定新创建的用户,一个session销毁时,list也会更新
下面是单例模式的list
package com.yunfei.bean;
import java.util.ArrayList;
import java.util.List;
public class UserList
{
private List list;
private static UserList instance = null;
// 以private的方式来声明构造方法,使得其他的类对象无法调用此类的构造函数
private UserList()
{
list = new ArrayList();
}
public static synchronized UserList getInstance()
{
if (instance == null)
{
instance = new UserList();
}
return instance;
}
public void addUser(User u)
{
if (u != null)
{
list.add(u);
}
}
public void removeUser(User u)
{
if (u != null)
list.remove(u);
}
public List getList()
{
return list;
}
}
下面的javaBean实现了HttpSessionBindingListener
package com.yunfei.bean;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
public class User implements HttpSessionBindingListener {
private int id;
private String username;
private String password;
private User u;
public User getU() {
return u;
}
public void setU(User u) {
this.u = u;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private UserList userList = UserList.getInstance();
public void valueBound(HttpSessionBindingEvent e) {
System.out.println("addUser: " + u.getUsername());
userList.addUser(u);
System.out.println(userList.getList());
}
public void valueUnbound(HttpSessionBindingEvent e) {
System.out.println("RemoveUser: " + u.getUsername());
userList.removeUser(u);
System.out.println(userList.getList());
}
}
废话不多说了,详细的自己看代码吧