javaweb之监听器实现在线人数

1.创建监听器

自定义一个监听器实现HttpSessionListener接口,如果不同的用户进行登录访问,则记录用户个数,如果用户退出了,则减少人数。对应其session的创建和销毁。

@WebListener
public class CountOnlineListener implements HttpSessionListener {
    @Override
    //===================用户登录 记录个数==============================
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        HttpSession session = httpSessionEvent.getSession();
        System.out.println("session对象创建了"+session);
        ServletContext application = session.getServletContext();
        Integer onlineUsers =(Integer) application.getAttribute("onlineUsers");
        if(onlineUsers==null){
            onlineUsers=new Integer(1);
        }else {
            onlineUsers=onlineUsers+1;
        }
        application.setAttribute("onlineUsers",onlineUsers);
        System.out.println("在线人数:"+onlineUsers);

    }

    @Override
    //=================用户退出 减少人数=========================
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        System.out.println("session对象销毁了"+httpSessionEvent.getSession());
        HttpSession session = httpSessionEvent.getSession();
        ServletContext application = session.getServletContext();
        /*Integer onlineUsers =(Integer) application.getAttribute("onlineUsers");
        if(onlineUsers!=null && onlineUsers.intValue()>0){
            onlineUsers=onlineUsers-1;
        }*/
        Integer onlineUsers =(Integer) application.getAttribute("onlineUsers");
        onlineUsers--;
        application.setAttribute("onlineUsers",onlineUsers);
        System.out.println("在线人数:"+onlineUsers);
    }

2.页面展示数据

注意:访问的是jsp页面,jsp被编译成java代码,其session会帮我们自动创建好.

  <p>在线人数:${applicationScope.onlineUsers}</p>

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐