============================================================================
原创作品,允许转载。转载时请务必以超链接形式标明原始出处、以及本声明。
请注明转自: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());
}
}
废话不多说了,详细的自己看代码吧
相关推荐
通过上述方式,`HttpSessionBindingListener`可以帮助我们实现对在线用户的精确监控和统计。同时,它还能用于其他场景,比如缓存管理、个性化数据跟踪等。理解并熟练运用这个接口,能够提升Java Web应用的功能性和...
`HttpSessionBindingListener`接口提供了一种优雅的方式来跟踪用户的在线状态,从而实现统计在线用户数的功能。这篇文章将详细讲解如何利用`HttpSessionBindingListener`来获取在线用户数。 首先,我们需要理解`...
在Java Web开发中,HttpSessionBindingListener是一个重要的接口,用于监听HttpSession中的绑定和解绑事件。在本例中,我们将使用HttpSessionBindingListener来记录登陆者的用户名和登录时间到数据库中。 首先,让...
- 使用`HttpSessionListener`可以监控用户登录状态的变化,及时更新在线用户列表,从而确保各个子系统之间共享正确的用户状态信息。 - 通过`HttpSessionBindingListener`可以在用户登录时绑定必要的认证信息至会话中...
jsp 统计在线人数实例,是个完整的项目实例,部署即可查看效果! 通过使用:HttpSessionListener、HttpSessionBindingListener来实现. valueBound 方法登录触发。 valueUnbound 方法退出触发。
在本文中,我们将深入探讨如何使用JavaServer Pages (JSP) 实现在线人数统计功能,以便展示当前在线的用户数量。我们将分析提供的代码段,并解释关键概念和技术。 首先,我们有一个名为`onLineUser`的类,它实现了`...
程序开发中,经常需要对某些事件进行...6)创建用户登录后动态显示在线人数和在线用户列表的resultjsp页面, 7)配置web.xml相关映射, 8)启动服务器,在不同浏览器上访问index.jsp页面进行相关操作,查看页面动态数据。
在线人数统计的实现也可以使用其他技术,例如使用应用程序的 Context 来保存在线用户名单,但是使用 HttpSessionBindingListener 接口可以使得实现更加简洁和高效。 在线人数统计的应用场景非常广泛,例如在线聊天...
这个类实现了`HttpSessionBindingListener`接口,这意味着每当一个会话创建或销毁时,该类都会收到通知,从而更新在线用户列表。`onLineUser`类主要功能包括: 1. **用户计数**:`getCount()`方法返回当前在线用户...
例如,我们可以创建一个实现了`HttpSessionBindingListener`的UserSession类,然后在Spring配置文件中声明该bean,并将其注入到需要使用session的控制器或服务类中。 Struts2作为MVC框架,负责处理HTTP请求和转发到...
根据给定文件的信息,我们可以总结出以下关于使用 JSP 实现在线用户人数统计的知识点: ### 1. **实现原理** 在线人数统计主要是通过利用 `HttpSession` 的生命周期事件来实现。每当一个新用户访问网站时,服务器会...
- 最后,通过`response.sendRedirect()`将用户重定向到`result.jsp`,展示登录成功的消息和在线用户列表。 4. **显示在线用户**: - 在`result.jsp`中,我们获取`application`对象中的在线用户列表,并遍历它,将...
总的来说,通过结合使用Session和监听器,开发者可以有效地统计在线用户,并根据业务需求实现相应的用户管理策略。同时,需要注意优化资源使用,避免过多的服务器负担,确保系统的稳定性和性能。
主要功能包括:记录用户登录状态、统计当前在线用户数量以及展示在线用户列表。 #### 二、关键技术点详解 ##### 1. 使用`HttpSessionBindingListener`监听会话绑定事件 为了实时获取用户的在线状态,项目中采用了...
本主题将深入探讨如何利用`HttpSessionAttributeListener`监听器来显示登录用户列表以及实现踢人功能。 `HttpSessionAttributeListener`是Java Servlet API的一部分,它属于`javax.servlet....
要实现用户不能在多个客户端登录的功能,我们需要监听Session的创建和销毁事件。在Java Web中,我们可以使用HttpSessionListener或者HttpSessionAttributeListener接口来实现这一目标。这里我们将主要关注...
基于ServletJSP的部门管理系统 项目简介 本项目是一个基于Servlet和JSP技术的部门管理系统,主要... 通过HttpSessionBindingListener接口监听用户会话的绑定和解除绑定事件,实时更新在线用户数量。 3. 部门管理
在这个例子中,我们将探讨如何使用Nginx作为反向代理和负载均衡器,结合Tomcat应用服务器以及Redis来实现session共享。这个组合常用于大型Web应用,确保用户会话在多个服务器之间无缝切换。 首先,Nginx是一个高...
在实际开发中,为了实现“在线踢人”,开发者可能还需要考虑到其他方面,比如安全性、并发控制、数据库操作(存储用户信息和在线状态)等。这通常涉及到数据库查询以获取用户的会话ID,然后在服务器端进行操作。同时...