当前位置: 首页 > article >正文

JavaWeb Listener 监听器详解:三大域对象监听 + 在线人数统计实战

前言Listener监听器是 JavaWeb 三大组件最后一个专门用于监听 Web 域对象的创建、销毁、属性变化在事件触发时自动执行逻辑。它是基于观察者模式实现常用于服务器初始化、在线用户统计、Session 监听、全局属性监控。本篇带你掌握 Listener 核心概念、常用监听器、配置方式、在线人数统计实战。一、Listener 核心概念1. 什么是监听器Listener 是用于监听 JavaWeb 三大域对象状态变化的组件ServletContextapplicationHttpSessionsessionServletRequestrequest监听事件对象创建 / 销毁属性添加 / 替换 / 移除2. 监听分类常用域对象生命周期监听器ServletContextListenerHttpSessionListenerServletRequestListener域对象属性监听器ServletContextAttributeListenerHttpSessionAttributeListenerServletRequestAttributeListener二、三大常用生命周期监听器1. ServletContextListener最常用监听全局应用上下文的创建与销毁。contextInitialized()服务器启动时执行contextDestroyed()服务器关闭时执行适用场景初始化配置、加载全局数据、预热缓存。2. HttpSessionListener监听用户会话创建与销毁。sessionCreated()用户第一次访问创建 SessionsessionDestroyed()Session 超时 / 手动销毁适用场景在线人数统计、登录日志、用户下线处理。3. ServletRequestListener监听请求对象创建与销毁。requestInitialized()请求创建requestDestroyed()请求销毁适用场景请求日志、接口耗时统计。三、Listener 开发步骤步骤 1编写监听器类实现对应监听器接口重写方法package cn.tx.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class MyListener implements ServletContextListener, HttpSessionListener { // 服务器启动 Override public void contextInitialized(ServletContextEvent sce) { System.out.println(Web应用启动...); } // 服务器关闭 Override public void contextDestroyed(ServletContextEvent sce) { System.out.println(Web应用关闭...); } // Session创建 Override public void sessionCreated(HttpSessionEvent se) { System.out.println(用户Session创建); } // Session销毁 Override public void sessionDestroyed(HttpSessionEvent se) { System.out.println(用户Session销毁); } }步骤 2web.xml 注册监听器listener listener-classcn.tx.listener.MyListener/listener-class /listener步骤 3测试启动服务器→触发 contextInitialized访问页面→创建 Session关闭服务器→触发销毁。四、实战在线人数统计经典案例需求实时统计当前在线用户数Session 创建 1销毁 - 1页面展示。1. 监听器实现public class OnlineCountListener implements ServletContextListener, HttpSessionListener { private Integer count 0; // 服务器启动初始化在线人数为0 Override public void contextInitialized(ServletContextEvent sce) { sce.getServletContext().setAttribute(count, count); System.out.println(初始化在线人数0); } // Session创建人数1 Override public void sessionCreated(HttpSessionEvent se) { ServletContext context se.getSession().getServletContext(); count (Integer) context.getAttribute(count); context.setAttribute(count, count); System.out.println(用户上线当前在线 count); } // Session销毁人数-1 Override public void sessionDestroyed(HttpSessionEvent se) { ServletContext context se.getSession().getServletContext(); count (Integer) context.getAttribute(count); context.setAttribute(count, --count); System.out.println(用户下线当前在线 count); } Override public void contextDestroyed(ServletContextEvent sce) {} }2. 配置 web.xmllistener listener-classcn.tx.listener.OnlineCountListener/listener-class /listener3. 页面展示index.jsp% page contentTypetext/html;charsetUTF-8 % html head title在线人数统计/title /head body h1当前在线人数${count}/h1 a hreflogout.jsp退出登录/a /body /html4. 退出页面logout.jsp% // 销毁Session request.getSession().invalidate(); % h1已退出登录/h15. 效果新用户访问 → 在线人数 1退出 / 超时 → 在线人数 - 1所有用户共享同一个统计值五、Listener 高频面试题Listener 作用监听 Web 三大域对象的创建、销毁、属性变化执行自定义逻辑。ServletContextListener 何时执行服务器启动 / 关闭时。如何实现在线人数统计使用 HttpSessionListener 监听 Session 创建与销毁用 ServletContext 存全局数量。Listener 需要配置 url-pattern 吗不需要全局监听。总结Listener 是 Web 事件驱动编程核心基于观察者模式无感监听域对象变化。监听三大域Context、Session、Request监听两类事件生命周期、属性变化经典实战在线人数、初始化加载、日志监控它虽简单却是大型 Web 项目必备组件。

相关文章:

JavaWeb Listener 监听器详解:三大域对象监听 + 在线人数统计实战

前言Listener(监听器)是 JavaWeb 三大组件最后一个,专门用于监听 Web 域对象的创建、销毁、属性变化,在事件触发时自动执行逻辑。它是基于观察者模式实现,常用于:服务器初始化、在线用户统计、Session 监听…...

手把手推导NCP1380准谐振反激公式:用Mathcad复现ON官方计算书(附推导过程)

从零推导NCP1380准谐振反激公式:Mathcad实战全解析 当电源工程师第一次打开NCP1380官方计算书时,那些看似魔术般直接呈现的公式往往让人既兴奋又困惑。兴奋的是有了现成的设计工具,困惑的是这些公式背后的物理本质和数学逻辑被隐藏在技术文档…...

浏览器兼容性问题汇总

1.IE10版本以上浏览器input标签后面自带一个X问题IE10,IE11浏览器当点击input text文本框时,输入文本后出现一个删除功能的X按钮IE浏览器效果,而谷歌浏览器没有解决方案:给input添加如下CSS样式 input::-ms-clear{display:none;}2…...

基于单周期控制的交错并联无桥Boost PFC变换器:宽电压范围与高效率转换技术实现高效电源管理

基于单周期控制的两相交错并联无桥Boost型 PFC 变换器 采用两路 Boost PFC 交错并联实现的,每一路的控制方式和结构都是相同的,由此推出控制方法相同,都为单周期控制,所以只分析一路的结果就可以类比 1、输入电压:150V…...

Hugging Face Hub下载模型文件:hf_hub_download vs snapshot_download保姆级对比指南

Hugging Face Hub模型下载实战指南:hf_hub_download与snapshot_download深度解析 当你第一次在Python项目中集成Hugging Face模型时,是否曾被这两个看似相似的下载函数困扰过?作为Hugging Face生态中最常用的两个下载工具,hf_hub_…...

统信UOS 1060e内网离线安装Docker保姆级教程(附CentOS 8 RPM包下载)

统信UOS 1060e内网离线安装Docker全流程实战指南 在企业级IT基础设施中,内网环境下的软件部署一直是运维工程师面临的特殊挑战。当服务器完全隔离于互联网时,每一个依赖包、每一条配置指令都可能成为阻碍系统正常运行的潜在障碍。本文将深入探讨在统信UO…...

解决Beyond Compare 5授权问题的完整方案:BCompare_Keygen工具使用指南

解决Beyond Compare 5授权问题的完整方案:BCompare_Keygen工具使用指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 当你在使用Beyond Compare 5进行文件比较或同步操作时&#x…...

# 发散创新:基于群体智能的Python蚁群算法优化路径规划实战在人工智能快速演进的时代,**群体智能(Swarm Int

发散创新:基于群体智能的Python蚁群算法优化路径规划实战 在人工智能快速演进的时代,群体智能(Swarm Intelligence) 作为一类受自然界生物行为启发的计算范式,正逐渐成为解决复杂优化问题的重要工具。本文聚焦于蚁群算…...

KKManager全流程管理指南:从安装到效率提升

KKManager全流程管理指南:从安装到效率提升 【免费下载链接】KKManager Mod, plugin and card manager for games by Illusion that use BepInEx 项目地址: https://gitcode.com/gh_mirrors/kk/KKManager 学习目标 理解KKManager的核心价值与应用场景掌握从…...

深度解析ViGEmBus:Windows虚拟游戏手柄驱动实战指南

深度解析ViGEmBus:Windows虚拟游戏手柄驱动实战指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus是一款专业的Windows内核模式驱动&a…...

BLE5.1 与蓝牙Mesh 在手环数字车钥匙中的角色与体验升级

可穿戴数字车钥匙把传统实体钥匙的能力收敛到手环、手表等贴身设备上,通过近距无线链路与车载控制器或专用通信单元交互,支持解闭锁、启动、迎宾等操作。典型实现会组合 低功耗蓝牙(BLE) 做常在线链路与距离感知,并以 …...

聚焦数据中心基建核心:我国服务器机架导轨市场规模达8.1亿元,产业支撑力凸显

据恒州诚思最新调研数据显示,2025年全球服务器机架导轨市场规模达8.1亿元,预计至2032年将增长至11.61亿元,期间复合增长率(CAGR)为5.3%。这一增长受多重因素驱动:全球数据中心建设加速,预计2026…...

吃透MQ:从原理到落地,解决分布式系统的核心痛点

在分布式系统与微服务架构普及的今天,“高并发、高可用、低耦合”成为系统设计的核心诉求。而消息队列(Message Queue,简称MQ),作为分布式架构中的“通信枢纽”,凭借异步通信、流量削峰、系统解耦等核心能力…...

原子操作的实现原理

在并发编程、操作系统与计算机体系结构中,原子操作是保证数据安全、避免竞态条件的基石。它的核心特性是不可中断、不可分割,操作要么完整执行,要么完全不执行,绝不会出现中间状态。本文将从定义出发,逐层拆解原子操作…...

Venera:5大革新功能打造无缝全平台漫画阅读体验

Venera:5大革新功能打造无缝全平台漫画阅读体验 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera Venera 是一款开源跨平台漫画应用,专为漫画爱好者打造全设备同步的阅读解决方案。无论你使用 Windows、…...

永磁同步电机双矢量模型预测电流MPCC控制仿真:传统与现代控制策略的对比分析

永磁同步电机双矢量模型预测电流MPCC控制仿真【参考文献】 (1)参考文献:《永磁同步电机鲁棒双矢量模型预测电流控制_郭鑫》 (2)描述:传统单矢量预测电流控制在单个控制周期内只能输出单个电压矢量&#xff…...

MVC / MVVM 和 Vue3、React18 到底啥关系?

MVC / MVVM 和 Vue3、React18 到底啥关系? 我用最直白、最贴合你日常写代码的方式讲清楚,保证你瞬间通透。一、先给结论(最重要) Vue3 标准的 MVVM 框架(官方自己定义的)React18 借鉴 MVVM 思想&#xff…...

League-Toolkit:英雄联盟智能辅助工具的效率提升之道

League-Toolkit:英雄联盟智能辅助工具的效率提升之道 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是…...

Maxwell16.0实战:如何用实验电流数据搞定电机仿真(附.tab文件制作技巧)

Maxwell16.0实战:实验电流数据驱动电机仿真的全流程解析 电机仿真作为现代工业设计的重要环节,其准确性直接影响产品性能评估。而将实测电流数据融入仿真流程,往往是工程师突破"理想模型"局限的关键一步。本文将系统性地拆解从实验…...

COMSOL—超声相控阵聚焦仿真 模型介绍:激励函数是由高斯波和正弦波组成的脉冲函数

COMSOL—超声相控阵聚焦仿真 模型介绍:激励函数是由高斯波和正弦波组成的脉冲函数超声相控阵这玩意儿在工业检测和医学影像里玩得可溜了,今天咱们整点硬核的——用COMSOL搞个带高斯调制的超声聚焦仿真。先看这个模型的灵魂所在:激励信号设计。…...

OBS高级计时器:提升直播专业度的时间管理工具

OBS高级计时器:提升直播专业度的时间管理工具 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 在直播行业竞争日益激烈的今天,精准的时间控制是提升直播质量的关键因素之一。OBS高级计时器…...

美团、腾讯、字节怎么选?3个真实案例告诉你答案

美团、腾讯、字节怎么选?3个真实案例告诉你答案 2026校招季,三个朋友的不同选择 大厂直通车-校招大礼包:入口入口 写在前面 2026届秋招结束了。 我的三个朋友小A、小B、小C都拿到了心仪的offer。有意思的是,他们分别选了字节、腾…...

AI核心概念串联

目录一、Tokenizer二、LLM三、Context四、RAG五、Prompt六、Tool七、MCP八、Agent九、Skill原UP主视频:从 LLM 到 Agent Skill,一期视频带你打通底层逻辑! 一、Tokenizer 用户每次输入都是一串连续的句子,而LLM的最小单位是toke…...

形态学操作进阶:手把手教你设计Hit-or-Miss内核检测十字/直角结构

形态学操作进阶:手把手教你设计Hit-or-Miss内核检测十字/直角结构 在计算机视觉领域,形态学操作一直是图像处理中不可或缺的技术手段。其中,Hit-or-Miss变换作为一种高级形态学操作,能够精准定位二值图像中的特定结构模式。想象一…...

自适应混沌粒子群优化算法在PID参数整定中的应用:高效控制策略的代码详解与模型分享

自适应混沌粒子群整定PID/ACPSO-PID/PID参数整定 ACPSO(自适应混沌粒子群优化)整定PID(比例-积分-微分控制器)是一种高效的控制参数优化方法。 它利用粒子群优化(PSO)的基本框架,同时融入混沌理…...

2026微软SDE LeetCode高频题:208道,按频度排序,含备考建议

2026微软SDE LeetCode高频题:208道,按频度排序,含备考建议 微软SDE的LeetCode面试题,第一名不是反转链表,不是LRU缓存,而是—— 215. 数组中的第K个最大元素,出现14次。 我整理了基于真实面经…...

GPIO的输出输入方式总结

GPIO的四种输入方式GPIO的四种输出方式...

Apache Tomcat 在 IDEA 中配置完整教程(手把手保姆教程)

目录 文章内容简介 配置前提 IDEA 准备 IDEA 中的配置 文章内容简介 本文详细介绍了在IDEA中配置Apache Tomcat服务器的完整步骤。首先指导用户创建Maven Archetype项目。重点讲解了Tomcat服务器的配置过程,包括设置服务器路径、部署工件、修改HTTP端口等关键操…...

如何去选择品质优秀的段码屏厂家

在现代电子产品中,LCD液晶段码屏的应用越来越广泛。选择一家优质的厂家不仅能保证产品质量,还能提供高效的服务。本文将为您推荐十家在LCD液晶段码屏领域表现突出的厂家,帮助您做出明智的选择。1. 杭州斡能电子有限公司杭州斡能电子有限公司&…...

道心网络安全学习笔记系列之好靶场的信息收集2

上节课找了一个图片的网址,继续挑战其它靶场,我们看下一题收集十个百度域名,这还不是顺手就来,但是贴吧不行,那还不简单,去访问百度网站,顺便输入一个搜索词,都不用看,前…...