A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一,监听器的介绍
Java事件监听器是由事件类和监听接口组成,自定义一个事件前,必须提供一个事件的监听接口以及一个事件类。JAVA中监听接口是继承java.util.EventListener的类,事件类继承java.util.EventObject的类。
Java事件监听器属性的新增、删除和修改划分成三种,分别针对于ServletContextHttpSessionServletRequest对象。
二,使用监听器统计网站在线人数
每当有一个访问连接到服务器时,服务器就会创建一个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"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        <!-- 统计在线人数 -->
        <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
项目结构如下图:

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马