显示在线人员列表
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="loginConf.jsp" method="post">
<table>
<tbody>
<tr>
<td><font color="red">${requestScope.error}</font></td>
</tr>
<tr>
<td align="right">用户名:</td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td align="right">密码:</td>
<td><input type="password" name="password"/></td>
</tr>
<tr>
<td><input type="submit" value="登录"/></td>
<td><input type="reset" value="重置"/></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录判断页面</title>
</head>
<body>
<%
String username = request.getParameter("username");
// 登录判断省略
session.setAttribute("username", username);//将用户名保存到session中
%>
<jsp:forward page="UserList.jsp"></jsp:forward>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Iterator" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>在线人员列表</title>
</head>
<body>
<h3>在线人员列表</h3>
<h5>欢迎${sessionScope.username}的登录,您可以选择<a href="loginOut.jsp">注销</a></h5>
<h5>当前总在线人数${fn:length(applicationScope.allUser)}</h5>
<c:forEach items="${applicationScope.allUser}" var="username" varStatus="stat">
<img src="images/username.gif"><c:out value="${username}"></c:out>
<c:if test="${(stat.index+1)%5==0}">
<br/>
</c:if>
</c:forEach>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注销</title>
</head>
<body>
<%
session.invalidate();
%>
<jsp:forward page="loginForm.jsp"></jsp:forward>
</body>
</html>
package com.mison.listener;
import java.util.ArrayList;
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 OnlineUserListListener implements ServletContextListener,
HttpSessionListener, HttpSessionAttributeListener {
private ServletContext application = null;
public void contextInitialized(ServletContextEvent sce) {
ArrayList<String> allUser = new ArrayList<String>();
application = sce.getServletContext();
application.setAttribute("allUser", allUser);
}
public void contextDestroyed(ServletContextEvent sce) {
}
public void sessionCreated(HttpSessionEvent se) {
}
public void sessionDestroyed(HttpSessionEvent se) {
ArrayList<String> allUser = (ArrayList<String>) application.getAttribute("allUser");
String user = (String) se.getSession().getAttribute("username");
allUser.remove(user);
application.setAttribute("allUser", allUser);
}
public void attributeAdded(HttpSessionBindingEvent se) {
ArrayList<String> allUser = (ArrayList<String>) application.getAttribute("allUser");
String user = (String) se.getValue();
allUser.add(user);
application.setAttribute("allUser", allUser);
}
@Override
public void attributeRemoved(HttpSessionBindingEvent se) {
}
@Override
public void attributeReplaced(HttpSessionBindingEvent se) {
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<listener>
<description>在线人数监听器</description>
<listener-class>com.mison.listener.OnlineUserListListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
分享到:
相关推荐
此资源与我的博客12_JavaWeb——Filter&Listener中的案例对应,在11_JavaWeb——Cookie&Session案例资源基础上加上了过滤器,实现了对未登录用户的拦截,希望有所帮助。
本主题将深入探讨如何使用Java监听器来统计当前在线人数,这通常涉及到网络编程,尤其是基于Socket或者HTTP协议的服务器应用。在这个场景下,监听器用于追踪用户的连接状态,从而提供实时的在线用户数量。 首先,...
在Web开发中,监听器(Listener)是一种关键的组件,它们是Java Servlet规范的一部分,用于监控和响应特定的Servlet容器事件。本学习笔记主要聚焦于理解监听器的概念、作用以及如何在实际应用中使用它们。 一、监听...
Oracle 监听器 Listener 资料 Oracle 监听器 Listener 是一个重要的数据库服务器组件,在整个 Oracle 体系结构中,扮演着重要的作用。它负责管理 Oracle 数据库和客户端之间的通讯,它在一个特定的网卡端口(默认是...
在Spring boot中通过HttpSessionListener监听器统计在线人数是一种常见的技术实现方式,适用于需要跟踪和管理用户会话状态的Web应用程序。以下是从给定文件中提炼的关键知识点。 首先,了解HttpSessionListener接口...
在这个场景下,我们关注的是如何利用监听器来实现在线人数的统计。在线人数统计是一项重要的功能,特别是在构建实时交互的Web应用或者聊天室时,能够提供实时的用户活跃度信息。 首先,我们需要理解业务需求。当...
过滤器Filter和监听器Listener
Java Servlet监听器(Listener)是Java Web开发中的一个重要组件,它们允许开发者在特定事件发生时执行自定义逻辑,而无需直接修改原有的业务代码。监听器是Servlet规范的一部分,通过实现特定的接口,开发者可以...
在Java Web开发中,过滤器(Filter)和监听器(Listener)是两个非常重要的概念,它们主要用于增强应用程序的功能和管理应用程序的状态。这篇文章将对这两者的应用进行深入的总结。 **过滤器Filter** 过滤器是在...
在Java Web开发中,监听器(Listener)和过滤器(Filter)是两个非常重要的概念,它们主要用于增强应用程序的功能和性能。下面将详细讲解这两个概念及其应用。 ### 监听器(Listener) 监听器是实现特定接口的Java...
监听器Listener解析与实例监听器-就是一个实现待定接口的普通Java程序,此程序专门用于监听另外一个类的方法调用。 这是使用观察者模式的。什么是观察者模式: 定义对象间一对多的依赖关系,当一个对象的状态发生...
在Java Web开发中,监听器(Listener)和过滤器(Filter)是两种非常重要的组件,它们分别承担着不同的职责。监听器主要用于监听应用程序中的特定事件,而过滤器则用于在请求处理之前和之后对请求和响应进行拦截,...
在Java世界中,"监听器Listener"是一种广泛使用的机制,主要应用于事件驱动编程。它允许程序注册对特定事件的兴趣,并在这些事件发生时接收通知。监听器是接口,实现这些接口的类通常需要被添加到特定组件(如...
Java Web监听器Listener接口原理及用法实例 Java Web监听器Listener接口是一种特殊的Java接口,用于监听和响应Web应用程序中的事件。该接口定义在javax.servlet包中,提供了一种机制,使开发者能够监听和响应Web...
Oracle 数据库监听器(LISTENER)和本地服务名(Tnsname)配置 本文主要介绍 Oracle 数据库监听器(LISTENER)和本地服务名(Tnsname)的配置,旨在帮助读者了解 Oracle 网络连接配置的主要组件和配置方法。 一、监听器...
标题"listener监听器demo"和描述"listener监听器小例子"暗示我们将探讨的是一个关于`Listener`的示例代码。 首先,让我们从Java GUI编程的角度来看`Listener`。在Swing或AWT中,我们经常使用各种类型的`Listener`,...
例如,当一个用户打开一个Web页面时,创建一个新的会话,监听器会接收到这个事件并增加在线人数;而当用户关闭浏览器或会话超时时,监听器则会减少在线人数。这样,我们就可以实时获取到网站的在线访问者数量。 ...
TODO Spring注解驱动开发第38讲——你知道ApplicationListener的用法吗?
5. **显示在线人数**:你可以创建一个Servlet或JSP页面,实时显示当前在线人数。这可以通过访问一个全局维护的在线用户计数器或者查询数据库中的统计信息来实现。 6. **优化与注意事项**:为了防止因用户关闭浏览器...