您现在的位置是:首页 > Javascript
当前栏目
javaweb:监听器
2023-03-31 10:59:21 时间
监听器种类数不胜数,监听器最常被应用在GUI中,不过网站中也可以设置监听器,这里我们利用sessionListener实现一个网站在线人数统计的监听来了解一下监听器的使用。
首先建立一个类来实现监听器OnlineListener.class
1 package com.jms.listener; 2 3 import javax.servlet.ServletContext; 4 import javax.servlet.http.HttpSessionEvent; 5 import javax.servlet.http.HttpSessionListener; 6 7 public class OnlineListener implements HttpSessionListener{ 8 9 //统计网站中在线人数 10 11 //创建session时,触发这个监听 12 @Override 13 public void sessionCreated(HttpSessionEvent se) { 14 ServletContext sctContext = se.getSession().getServletContext(); 15 Integer onlinenumber = (Integer) sctContext.getAttribute("OnlineNumber"); 16 if(onlinenumber == null) { 17 onlinenumber = 1; 18 } else { 19 onlinenumber += 1; 20 } 21 sctContext.setAttribute("OnlineNumber", onlinenumber); 22 } 23 24 //销毁session时,触发这个监听 25 @Override 26 public void sessionDestroyed(HttpSessionEvent se) { 27 ServletContext sctContext = se.getSession().getServletContext(); 28 Integer onlinenumber = (Integer) sctContext.getAttribute("OnlineNumber"); 29 if(onlinenumber > 0) { 30 onlinenumber -= 1; 31 } 32 sctContext.setAttribute("OnlineNumber", onlinenumber); 33 } 34 35 36 }
编辑我们的index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>在线人数</title>
</head>
<body>
<% response.setHeader("Refresh", "3"); %>
<h1><span style="color:blue">当前在线人数:<%=pageContext.getServletContext().getAttribute("OnlineNumber") %></span></h1>
</body>
</html>
修改web.xml
<listener> <listener-class>com.jms.listener.OnlineListener</listener-class> </listener>
访问网站,测试一下效果如何
打开一个浏览器
打开第二个浏览器
设置的session过期时间为1分钟
(本文仅作个人学习记录用,如有纰漏,敬请指正)
相关文章
- TiDB Binlog 组件正式开源
- 使用Visual Studio Code对Node.js进行断点调试
- 推荐!数据可视化的十种优秀JavaScript图表库
- Node.js在复杂集成场景下占据统治地位的五个理由
- 玩转Node.js单元测试
- Node.js中内存泄漏分析
- Angular对React:一场关于Web开发者支持率的史诗对决
- 热点推荐:什么是后端开发?
- 谈谈Spring boot 启动层面的开发
- 使用NodeJS将文件或图像上传到服务器
- 编写React组件的最佳实践
- JavaScript MV*框架最值得关注的七个亮点
- 前端开发指南:如何利用PHP Cake框架构建应用
- 基于React与Vue后,移动开源项目Weex如何定义未来
- NodeJS和C++之间的类型转换
- jQuery中的常用到的三十九个技巧
- 官宣|Google Developers中国网站发布!
- NodeJS和C++之间的类型转换
- .NET Core首例Office开源跨平台组件(NPOI Core)
- 如何写出漂亮的React组件