监听器统计当前在线人数

和自甴很熟 提交于 2019-12-02 14:29:24

OnlineListener 实现接口HttpSessionListener

package listener;
 
import javax.servlet.ServletContext;
 
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
 
public class Online Listener implements HttpSessionListener {
 
    @Override
    public void sessionCreated(HttpSessionEvent e) {
 
        ServletContext application = e.getSession().getServletContext();
 
        Integer online_number = (Integer) application.getAttribute("online_number");
 
        if (null == online_number)
            online_number = 0;
        online_number++;
        application.setAttribute("online_number", online_number);
         
        System.out.println("新增一位在线用户");
    }
 
    @Override
    public void sessionDestroyed(HttpSessionEvent e) {
 
        ServletContext application = e.getSession().getServletContext();
 
        Integer online_number = (Integer) application.getAttribute("online_number");
 
        if(null==online_number){
            online_number = 0;
        }
        else
            online_number--;
        application.setAttribute("online_number", online_number);
        System.out.println("一位用户离线");
    }
}

然后再配置web.xml

<listener>
  <listener-class>com.Listener.OnlineListener</listener-class>
  </listener>

通过el表达式,直接获取application中的值

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<!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>Insert title here</title>
</head>
<body>
当前 在线人数 : ${online_number}

</body>

运行结果:
在这里插入图片描述
在这里插入图片描述
注明:需要更换浏览器才能显示更新的在线人数。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!