`

web在线用户简单实现

    博客分类:
  • java
阅读更多
◆ 创建一个静态工厂类保存在线用户,示例代码如下:
public class OnlineUserManager{
private static ServletContext servletContext=null;
/*
* 在线用户集合
* String: 登录用户session id
* UserBean: 登录用户对象
*/
private static Map<String,UserBean> userListMap = new HashMap<String,UserBean>();
/*
* 每个账号同时在线的个数
* Long: 用户id
* Integer: 在线数量
*/
private static Map<Long,Integer> userOnlineCountMap = new HashMap<Long,Integer>();
/*
* 每个session id对应的消息列表,主要实现给某一个在线用户(对应的session id)发送消息
* String: session id
* List<MessageBean>: 消息列表
*/
private static Map<String,List<MessageBean>> userMessageMap = new HashMap<String,List<MessageBean>>();

//主要方法

//用户成功登陆后,将此用户添加到在线用户集合中
public static void addUser(UserBean user){
......
userListMap.put(user.getSessionId(),user);
......
}
//用户注销时,根据用户serssion id将此用户从在线用户集合中移除
public static void deleteUserBySessionId(String  sessionId){
......
userListMap.remove(sessionId);
......
}

}

◆ 使用HttpSessionBindingListener
HttpSessionBindingListener介绍:
Session代表客户的会话过程,客户登录时,往 Session 中传入一个对象,即可跟踪客户的会话。
在 Servlet 中,传入 Session 的对象如果有一个实现 HttpSessionBindingListener 接口的对象(方便起见,此对象称为监听器),
则在传入的时候(即调用 HttpSession 对象的 setAttribute 方法的时候)
和移去的时候(即调用 HttpSession 对象的 removeAttribute 方法的时候或 Session Time out 的时候)
Session 对象会自动调用监听器的 valueBound 和 valueUnbound 方法
(这是 HttpSessionBindingListener 接口中的方法)。

public class HttpSessionBinding implements javax.servlet.http.HttpSessionBindingListener{
/**
* 將新的用戶添加到在線用戶集合中
*/
public void valueBound(javax.servlet.http.HttpSessionBindingEvent e) {
Wuser userSession = (Wuser)e.getSession().getAttribute(this.SESSION_USER_BEAN);
userSession.setSessionId(e.getSession().getId());
                //將用戶添加到用戶在線List中
                OnlineUserManager.addUser(userSession);
}
/**
* 將過期用戶從在線用戶集合中剔除
*/
public void valueUnbound(javax.servlet.http.HttpSessionBindingEvent e) {
            OnlineUserManager.deleteUserBySessionId(e.getSession().getId());
}

◆ 在用户登录成功后执行request.getSession().setAttribute("HttpSessionBinding", new HttpSessionBinding()),触发HttpSessionBindingListener监听器。
分享到:
评论

相关推荐

    JAVA Web在线用户统计

    在JAVA Web开发中,实现在线用户统计是一项关键功能,它能够帮助网站或应用程序的管理员实时了解当前有多少用户正在访问和使用系统。这个“JAVA Web在线用户统计”解决方案显然是强大、好用且简单的,这意味着它可能...

    用Python实现web端用户登录和注册功能的教程

    用户管理是绝大部分Web网站都需要解决的问题。用户管理涉及到用户注册和登录。 用户注册相对简单,我们可以先通过API把用户注册这个功能实现了: _RE_MD5 = re.compile(r'^[0-9a-f]{32}$') @api @post('/api/users'...

    简易web服务器实现

    本篇文章将深入探讨如何实现一个简单的Web服务器,并基于给出的标题"简易web服务器实现"以及描述中的信息,我们将重点讲解Web服务器的基本概念、工作原理以及实现步骤。 一、Web服务器基本概念 Web服务器是一种运行...

    java web实现的简易bbs论坛

    总的来说,"java web实现的简易bbs论坛"项目涵盖了Web开发的多个重要方面,包括MVC架构、数据库设计与操作、用户认证、前端开发以及服务器端技术。通过实践这个项目,开发者可以深入理解Java Web开发的流程,提升...

    基于WebServices简易网络聊天工具的设计与实现

    综上所述,本文所描述的简易网络聊天工具在技术实现上虽然看似简单,但实际上融合了多种IT领域的核心技术,包括WebServices、LINQ to SQL、C/S架构、数据库设计和开发流程等。通过详细掌握这些知识点,我们不仅可以...

    web简单的用户登录

    【标题】:Web简单的用户登录 在Web应用开发中,用户登录系统是常见的功能模块,它允许用户通过提供有效的身份凭证(通常是用户名和密码)来访问受保护的资源。在这个简单用户登录的例子中,我们主要关注的是前端...

    python 实现 web terminal 浏览器直接登录服务器

    它允许用户无需在本地计算机上安装SSH客户端,只需通过Web界面即可实现与远程服务器的交互。这种方式大大简化了运维人员的工作流程,提高了工作效率,特别是在多用户协作或者需要临时访问服务器的情况下尤为实用。 ...

    Qt实现WebServer通讯

    【Qt实现WebServer通讯】这一主题涉及到的是使用Qt框架构建一个能够与Web服务器进行通信的应用程序。Qt是一个跨平台的C++开发库,它提供了丰富的功能,包括图形用户界面、网络编程、数据库接口等,使得开发者可以...

    cpp-Linux下的简易web服务器实现web端用户注册登录功能

    在本项目中,"cpp-Linux下的简易web服务器实现web端用户注册登录功能",我们主要探讨的是如何在Linux环境下使用C++语言构建一个小型的Web服务器,该服务器能够处理用户的注册和登录请求,同时具备一定的高并发能力。...

    android下面的webserver的实现

    4. **轻量级应用服务**:对于简单的应用功能,如智能家居控制、物联网设备通讯等,Android Web服务器可以作为快速实现方案。 总的来说,Android Web服务器的实现涉及网络编程、HTTP协议理解以及服务器框架的运用。...

    课程作业-基于Java实现web实验登录界面源码+项目说明.zip

    课程作业-基于Java实现web实验登录界面源码+项目说明.zip课程作业-基于Java实现web实验登录界面源码+项目说明.zip课程作业-基于Java实现web实验登录界面源码+项目说明.zip课程作业-基于Java实现web实验登录界面源码+...

    简单的web打印功能实现

    在Web开发中,实现打印功能是一项常见的需求,它允许用户将网页内容打印到纸上或以PDF形式保存。本文将深入探讨如何实现一个简单的Web打印功能,以满足基本的打印需求。 首先,我们要理解Web打印的基本原理。Web...

    web实现简单分页

    本教程将探讨如何在Web中实现简单的分页功能。 首先,我们需要了解分页的基本概念。分页通常由两部分组成:当前页码和总页数。用户可以通过点击页码或使用导航按钮(如“上一页”、“下一页”)在页面间切换。此外...

    C#实现简单的Web打印控件

    在本文中,我们将深入探讨如何使用C#语言实现一个简单的Web打印控件。Web打印控件对于Web应用程序来说是至关重要的,它允许用户在浏览器环境中直接打印网页内容,而无需通过复制粘贴到其他应用程序中。传统的Web打印...

    基于WEB的简单ERP系统的设计与实现

    基于WEB的简单ERP系统的实现,简单实现了用户管理、角色管理、主数据管理、供应商管理、销售管理、库存管理等模块,很有借鉴意义

    web购物车(javascript实现)

    总结来说,"web购物车(javascript实现)"项目涵盖了JavaScript在前端开发中的基础应用,如数据操作、事件监听、DOM操作和用户交互,这些都是成为一个优秀web前端开发者必备的技能。通过对该项目的学习和实践,...

    C#简单实现webapi接口监听功能

    C#简单实现webapi接口监听功能 可基于搭建好的框架,自行添加接口测试

    (linux下C语言实现)简易web服务器

    9. **安全性**:虽然这是一个简单的Web服务器,但安全方面也不容忽视。比如,防止路径遍历攻击,限制可访问的文件路径,避免服务器成为恶意代码的传播途径等。 综上所述,开发一个基于Linux的C语言简易Web服务器...

    Ajax实现的简单的web聊天

    总的来说,通过Ajax实现的Web聊天系统为用户提供了一种流畅、实时的交互体验,而背后涉及到的技术点则涵盖了前端开发、服务器端编程以及数据管理等多个方面。这个简单的web聊天项目提供了一个学习和实践这些技术的...

Global site tag (gtag.js) - Google Analytics