Listener监听器实现在线用户统计
1.前言
当大家刚开始接触Java Web做项目时,掌握了Servlet后,也许对Listener监听器的作用,以及代码编写并未能很好的掌握。本文通过实现在线用户统计以及在线用户列表的代码实操,让大家通过实际操作理解并能使用Listener监听器。
2.业务场景
你是否想在项目中显示一个在线人数而无从下手???
你是否想在自己的平台上查看当前登录的用户列表???
本文通过JSP+Servlet+监听器Listener为你实现,花5分钟一起来看看吧。
3.效果展示
打开不同的浏览器进行登录。可以看到当前登录的人数以及用户列表。
当用户退出时,则注销当前用户。并且看到在线用户数量-1,以及用户列表也减少该用户。
4.代码实现
4.1 项目结构
4.2 页面准备
4.2.1 主页(index.jsp)
index.jsp用于显示当前登录用户(用户存在Session中),以及显示登录人数与登录用户的列表记录。还有login.jsp与register.jsp页面的跳转。由于登录用户的数据时存储在application域中的,因此需要在index.jsp中先注册,再登录。则可以看到用户登录列表。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<title>主页</title>
</head>
<body>
<h1>welcome to index.jsp!</h1>
<c:if test="${session_user!=null}">
欢迎您,${
session_user.userName}
<a href="loginOut">退出</a>
<a href="">用户列表</a>
</c:if>
<c:if test="${session_user==null}">
<a href="login.jsp">登录</a>
<a href="register.jsp">注册</a>
</c:if>
<a href="index.jsp">主页</a>
<span style="color: red">${
tip}</span>
<hr/>
<h3>在线用户</h3>
当前在线用户人数:[${
fn:length(onlineUser)}]人
<br/>
用户列表:<br/>
<c:forEach items="${onlineUser}" var="user" varStatus="u">
第[${
u.index+1}]位,在线[${
user}]用户。<br/>
</c:forEach>
</body>
</html>
4.2.2 登录页(login.jsp)
PS:登录前,请先去register.jsp中注册用户。此处没有连接数据库,数据存储在缓存中。因此需要先注册,才能进行登录。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>登录页面<