Java Web应用开发案例|使用监听器统计Web站点的在线用户数

简介: HttpSessionListener监听器,主要用于监听HttpSession对象的生命期变化,如创建session和释放session事件。一个session代表一个在线用户,因此常用HttpSessionListener监听器跟踪管理在线用户。

image.png

HttpSessionListener监听器,主要用于监听HttpSession对象的生命期变化,如创建session和释放session事件。一个session代表一个在线用户,因此常用HttpSessionListener监听器跟踪管理在线用户。

public interface HttpSessionListener {
default void sessionCreated( HttpSessionEvent se){}
[]default void sessionDestroyed(HttpSessionEvent se) {}
}

01、在线用户数统计

使用监听器,统计Web站点的在线用户数,操作步骤如下所述。

(1) 定义监听器OnlineUserListerner。

aWebListener
public class OnlineUserListerner
implements HttpSessionlistener []

(2) 定义成员变量userCount,用于记录在线用户数。

为了防止高并发产生影响,userCount的数据类型为原子整数AtomicInteger。

public class OnlineUserListerner
implements HttpSessionListener{
private AtomicInteger userCount;
public OnlineUserListerner(){
userCount = new AtomicInteger(0);
}
}

(3) 新用户上线,触发sessionCreated事件。

public void sessionCreated(HttpSessionEvent se){
int user = userCount.incrementAndGet();
System.out.println("在线用户数:” + user);
}

(4) 当session超时失效时,会触发sessionDestroyed事件。

public void sessionDestroyed(HttpSessionEvent se){
int user = userCount.decrementAndGet();
System.out.println("在线用户数:" + user);
}

小结

HttpSessionListener监听器默认为单例模式,在Tomcat启动时会自动创建监听器对象。因此,在线用户数可以使用成员变量记录。有些监听器不是单例模式,使用成员变量要非常小心。

用户主动退出系统,调用HttpSession的invalidate()方法会销毁当前的session,但是Web应用会自动创建另外一个会话对象,因此在线人数不会变。只有用户超时未操作,服务器主动删除session对象时,在线用户数才会减少。

目录
相关文章
|
2月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
279 4
|
3月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
424 0
|
3月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
419 1
|
4月前
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
364 1
|
4月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
561 64
|
5月前
|
缓存 NoSQL Java
Java Web 从入门到精通之苍穹外卖项目实战技巧
本项目为JavaWeb综合实战案例——苍穹外卖系统,涵盖Spring Boot 3、Spring Cloud Alibaba、Vue 3等主流技术栈,涉及用户认证、订单处理、Redis缓存、分布式事务、系统监控及Docker部署等核心功能,助你掌握企业级项目开发全流程。
640 0
|
5月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
404 0
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
196 1
|
2月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
223 1
|
3月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案