一,监听器的介绍 Java事件监听器是由事件类和监听接口组成,自定义一个事件前,必须提供一个事件的监听接口以及一个事件类。JAVA中监听接口是继承java.util.EventListener的类,事件类继承java.util.EventObject的类。 Java事件监听器属性的新增、删除和修改划分成三种,分别针对于ServletContext、HttpSession、ServletRequest对象。 二,使用监听器统计网站在线人数 每当有一个访问连接到服务器时,服务器就会创建一个session来管理会话。我们可以通过统计session的数量来获得当前在线人数。 1:创建监听器类,实现HttpSessionListener接口。 2:重写监听器类中的方法 public class MyListener implements HttpSessionListener { public int count = 0;// 记录session的数量 @Override public void sessionCreated(HttpSessionEvent sessionEvent) {// 监听session的创建 count++; sessionEvent.getSession().getServletContext().setAttribute("Count", count); } @Override public void sessionDestroyed(HttpSessionEvent sessionEvent) { {// 监听session的撤销 count--; sessionEvent.getSession().getServletContext().setAttribute("Count", count); } } } 3:在web.xml中配置监听器。 <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- 统计在线人数 --> <listener> <listener-class>com.itheima.MyListener</listener-class> </listener> </web-app> 3:编写login.jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>login.jsp</title> </head> <body> 欢迎您:您的会话ID是: ${pageContext.request.session.id}<br/> 当前在线人数:${applicationScope.Count}<br/> <a href="logout.jsp">退出</a> </body> </html> 4:编写logout.jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>logout.jsp</title> </head> <body> <% session.invalidate(); %> 当前在线人数:${applicationScope.Count} 您已经成功退出 </body> </html> 5:将项目部署到Tomcat,启动Tomcat访问login.jsp页面,显示当前在线人数为1 6:点退出时,跳转到logout.jsp页面,显示当前在线人数为0 项目结构如下图:
|