`
xiaoyu966
  • 浏览: 254353 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用单例和HttpSessionBindingListener以及ajax轮询实现在线用户列表

阅读更多

============================================================================

原创作品,允许转载。转载时请务必以超链接形式标明原始出处、以及本声明。

请注明转自: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());

 }

}

 

废话不多说了,详细的自己看代码吧

分享到:
评论
1 楼 george674834080 2009-10-14  
var url="userlist.jsp";
...//其他代码..
if(httpReq)  
    {  
        httpReq.onreadystatechange=tillRefresh;  
        httpReq.open("GET",url,true);//异步  
          //这里的url为什么用jsp页面呢,这样即使动态刷新,得到的数据也是不变 的啊,jsp页面的数据是不能改变的吧?
        httpReq.send(null);  
    }

相关推荐

Global site tag (gtag.js) - Google Analytics