`
xiaoyu966
  • 浏览: 258192 次
  • 性别: 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);  
    }

相关推荐

    HttpSessionBindingListener实现在线人员查看即人数统计

    通过上述方式,`HttpSessionBindingListener`可以帮助我们实现对在线用户的精确监控和统计。同时,它还能用于其他场景,比如缓存管理、个性化数据跟踪等。理解并熟练运用这个接口,能够提升Java Web应用的功能性和...

    HttpSessionBindingListener获取在线用户数(转)

    `HttpSessionBindingListener`接口提供了一种优雅的方式来跟踪用户的在线状态,从而实现统计在线用户数的功能。这篇文章将详细讲解如何利用`HttpSessionBindingListener`来获取在线用户数。 首先,我们需要理解`...

    基于HttpSessionBindingListener的登陆日志

    在Java Web开发中,HttpSessionBindingListener是一个重要的接口,用于监听HttpSession中的绑定和解绑事件。在本例中,我们将使用HttpSessionBindingListener来记录登陆者的用户名和登录时间到数据库中。 首先,让...

    HttpSessionListener 和HttpSessionBindingListener的区别 单点登录

    - 使用`HttpSessionListener`可以监控用户登录状态的变化,及时更新在线用户列表,从而确保各个子系统之间共享正确的用户状态信息。 - 通过`HttpSessionBindingListener`可以在用户登录时绑定必要的认证信息至会话中...

    jsp 统计在线人数利用HttpSessionListener、HttpSessionBindingListener

    jsp 统计在线人数实例,是个完整的项目实例,部署即可查看效果! 通过使用:HttpSessionListener、HttpSessionBindingListener来实现. valueBound 方法登录触发。 valueUnbound 方法退出触发。

    JSP统计在线人数实现

    在本文中,我们将深入探讨如何使用JavaServer Pages (JSP) 实现在线人数统计功能,以便展示当前在线的用户数量。我们将分析提供的代码段,并解释关键概念和技术。 首先,我们有一个名为`onLineUser`的类,它实现了`...

    源码:程序开发中,经常需要对某些事件进行监听,比如一一个网站页面可能要动态监听当前在线用户有 哪些以及在线总人数

    程序开发中,经常需要对某些事件进行...6)创建用户登录后动态显示在线人数和在线用户列表的resultjsp页面, 7)配置web.xml相关映射, 8)启动服务器,在不同浏览器上访问index.jsp页面进行相关操作,查看页面动态数据。

    javaweb开发在线人数统计

    在线人数统计的实现也可以使用其他技术,例如使用应用程序的 Context 来保存在线用户名单,但是使用 HttpSessionBindingListener 接口可以使得实现更加简洁和高效。 在线人数统计的应用场景非常广泛,例如在线聊天...

    用JSP程序实现统计当前在线人数

    这个类实现了`HttpSessionBindingListener`接口,这意味着每当一个会话创建或销毁时,该类都会收到通知,从而更新在线用户列表。`onLineUser`类主要功能包括: 1. **用户计数**:`getCount()`方法返回当前在线用户...

    Spring+Struts2+ibatis 异地登录 HttpSessionBindingListener

    例如,我们可以创建一个实现了`HttpSessionBindingListener`的UserSession类,然后在Spring配置文件中声明该bean,并将其注入到需要使用session的控制器或服务类中。 Struts2作为MVC框架,负责处理HTTP请求和转发到...

    jsp统计在线人数.txt

    根据给定文件的信息,我们可以总结出以下关于使用 JSP 实现在线用户人数统计的知识点: ### 1. **实现原理** 在线人数统计主要是通过利用 `HttpSession` 的生命周期事件来实现。每当一个新用户访问网站时,服务器会...

    在线人数统计

    - 最后,通过`response.sendRedirect()`将用户重定向到`result.jsp`,展示登录成功的消息和在线用户列表。 4. **显示在线用户**: - 在`result.jsp`中,我们获取`application`对象中的在线用户列表,并遍历它,将...

    JSP中基于Session的在线用户统计分析

    总的来说,通过结合使用Session和监听器,开发者可以有效地统计在线用户,并根据业务需求实现相应的用户管理策略。同时,需要注意优化资源使用,避免过多的服务器负担,确保系统的稳定性和性能。

    jsp完成对在线人数的统计!

    主要功能包括:记录用户登录状态、统计当前在线用户数量以及展示在线用户列表。 #### 二、关键技术点详解 ##### 1. 使用`HttpSessionBindingListener`监听会话绑定事件 为了实时获取用户的在线状态,项目中采用了...

    监听器显示登陆用户列表,并实现踢人功能

    本主题将深入探讨如何利用`HttpSessionAttributeListener`监听器来显示登录用户列表以及实现踢人功能。 `HttpSessionAttributeListener`是Java Servlet API的一部分,它属于`javax.servlet....

    利用session监听器实现一个客户不能再两个客户端登录。

    要实现用户不能在多个客户端登录的功能,我们需要监听Session的创建和销毁事件。在Java Web中,我们可以使用HttpSessionListener或者HttpSessionAttributeListener接口来实现这一目标。这里我们将主要关注...

    基于ServletJSP的部门管理系统.zip

    基于ServletJSP的部门管理系统 项目简介 本项目是一个基于Servlet和JSP技术的部门管理系统,主要... 通过HttpSessionBindingListener接口监听用户会话的绑定和解除绑定事件,实时更新在线用户数量。 3. 部门管理

    一个nginx和tomcat负载的例子,附上实现(已测试)

    在这个例子中,我们将探讨如何使用Nginx作为反向代理和负载均衡器,结合Tomcat应用服务器以及Redis来实现session共享。这个组合常用于大型Web应用,确保用户会话在多个服务器之间无缝切换。 首先,Nginx是一个高...

    Servlet技术(事件监听器-在线踢人).zip

    在实际开发中,为了实现“在线踢人”,开发者可能还需要考虑到其他方面,比如安全性、并发控制、数据库操作(存储用户信息和在线状态)等。这通常涉及到数据库查询以获取用户的会话ID,然后在服务器端进行操作。同时...

Global site tag (gtag.js) - Google Analytics