java创建一个统计在线人数的监听器
1)创建一个OnLineCountListener监听器,统计在线人数
package xqyy.com.listener;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class OnLineCountListener implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener {
//声明一个servletContext对象
private ServletContext application=null;
@Override
public void attributeAdded(HttpSessionBindingEvent hsbe) {
//如果登录成功,则将用户名保存在列表中
List l=(List) this.application .getAttribute("alluser");
l.add(hsbe.getValue());
this.application.setAttribute("alluser", l);
}
@Override
public void attributeRemoved(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
//context删除时激发
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
//初始化时激发
@Override
public void contextInitialized(ServletContextEvent sce) {
//容器初始化时,向application中存放一个容器
this.application=sce.getServletContext();
this.application.setAttribute("alluser", new ArrayList());
}
@Override
public void sessionCreated(HttpSessionEvent se) {
// TODO Auto-generated method stub
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
//将用户名称从列表中删除
List l=(List) this.application.getAttribute("alluser");
String value=(String) se.getSession().getAttribute("uname");
l.remove(value);
this.application.setAttribute("alluser", l);
}
}
2)创建一个online.jsp
<%@page contentType="text/html"% import="java.util.*">
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<div id="one">
<div id="two">
<h3>欢迎登录</h3>
<form action="online.jsp" method="post">
用户名:<input type="text" name="name" style="width: 110px;" />
<br />
密 码:<input type="password" name="password" style="width: 110px;" />
<br />
<br />
<input type="submit" name="commit" value="登录" style="color: blueviolet;" />
<a href="logout.jsp">注销</a>
</form>
</div>
<div id="three">
<!--向session接受输入的用户名-->
<%
request.setCharacterEncoding("UTF-8");
if(request.getParameter("name")!=null){
session.setAttribute("uname",request.getParameter("name"));
}
%>
<h2>在线人员</h2>
<%
List l=(List) application.getAttribute("alluser");
Iterator iter=l.Iterator();
while(iter.hasNext()){
%>
<li><%=iter.next()%></li>
<% } %>
<p>当前在线的用户数:<%=l.size() %></p>
</div>
</div>
</body>
</html>
3)创建logout.jsp页面实现用户注销
<body>
<%
sesion.invalidate()
%>
<a href="online.jsp">再次进入系统</a>
4)最后,在web.xml文件中配置监听
<listener>
<listener-class>xqyy.com.listener.OnLineCountListener</listener-class>
</listener>
java创建一个统计在线人数的监听器相关推荐
- Java如何实现统计在线人数的功能?
很多人在笔试或者面试中问到:现在要你实现一个统计在线人数的功能,你该怎么设计? 不知道的朋友,这篇文章告诉你. 先说答案:可以利用监听器Listener来实现 目录 1. 监听器的简介 2. Java ...
- java创建一个不可变对象_使用不可变对象创建值对象
java创建一个不可变对象 在回答我最近的文章中AutoValue:生成的不可变的值类 , 布兰登认为,这可能是有趣的,看看如何AutoValue比较项目Lombok和Immutables和凯文借调这 ...
- java创建临时文件_用Java创建一个临时文件
java创建临时文件 The task is to create a temporary file in Java. 任务是用Java创建一个临时文件. Creating a temporary fi ...
- java订单类_基于Java创建一个订单类代码实例
这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订 ...
- java订单类_使用Java创建一个订单类代码实例
这篇文章主要简介了使用Java创建一个订单类代码实例,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 需求描述 定义一个类,描述订单信息 订单id ...
- java创建一个不可变对象_如何在Java中创建不可变类?
java创建一个不可变对象 Today we will learn about the immutable class in Java. What are immutable classes? The ...
- 用java创建一个最简单的窗口
如何使在创建窗体前,需要导入相关的 package 包. import java.awt.*; import javax.swing.*; 使用new关键词来创建一个窗体对象 JFrame j ...
- Java 创建一个线程的三种方式
Java 创建一个线程的三种方式 更多内容,点击了解: https://how2j.cn/k/thread/thread-start/353.html 创建多线程有3种方式,分别是继承线程类,实现Ru ...
- java创建一个图片_Java 创建一个简单的验证码图片
代码如下: package lixin.gan.test; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2 ...
最新文章
- java decodeurl,java decodeURIComponent
- 生成随机字符串的几种常用方式
- 计算机网络·物理层练习题
- 【自动驾驶】毫米波雷达相关知识专题
- MybatisPlus条件构造器说明以及selectPage方法
- 【Python入门】一个有意思还有用的Python包-汉字转换拼音
- 割平面法只能求解纯整数规划吗_【DMC第四讲】整数规划
- [树形dp] Jzoj P1046 寻宝之旅
- UVA 1160——X-Plosives
- 《软件工程(第4版?修订版)》—第1章1.5节 系统的方法
- java 反射 成员变量_Java 反射:成员变量
- python批量打印机excel_python批量设置多个Excel文件页眉页脚的脚本
- 关于C++中ios::sync_with_stdio(false)
- linux mail使用笔记
- 财务有必要学python吗-工作三年却被实习生抢了饭碗,学会Python到底有多吃香?...
- java 写文件 并发_记录一次Java文件锁引起的并发写文件问题
- MATLAB机械动力分析,用MATLAB实现机械动力学
- 从0开始Go语言,用Golang搭建网站
- 讲解后台管理系统之列表设计分享
- Groovy脚本基础全攻略
热门文章
- Android Edittext只能输入汉字和英文
- 给苹果系统设定锁屏快捷键
- 工业用微型计算机实践,工业用微型计算机实践课程考核试卷一
- Edge浏览器兼容性问题,报错误代码:STATUS_INVALID_IMAGE_HASH的解决方法
- 【iOS】熟悉Objective-C
- boss直聘一句话介绍优势_安家结局:徐姑姑一句话暴露“隐藏身份”,最大boss即将上线...
- python脚本:excel多列转为一列
- 快捷指令批量发送短信
- 【AD18】边框设置
- oracle查询字体,客户端为Oracle 11g 查询中文字体 显示乱码