zoukankan      html  css  js  c++  java
  • session统计在线人数

    用监听器监听访问网站的事件,难以实现服务器端验证游览器端是否关闭游览器,所以模拟session过期设置session的生命周期。

    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.http.*;
    
    public class ServletListener implements ServletContextListener,
            HttpSessionListener, HttpSessionAttributeListener {
    
        // Public constructor is required by servlet spec
        public ServletListener() {
        }
        // -------------------------------------------------------
        // ServletContextListener implementation
        // -------------------------------------------------------
        //session创建时人数自增
        public void sessionCreated(HttpSessionEvent se) {
            /* Session is created. */
            HttpSession session = se.getSession();
            session.setMaxInactiveInterval(3*60);
            ServletContext servletContext = session.getServletContext();
            int count = (int) servletContext.getAttribute("count");
            servletContext.setAttribute("count",++count);
            System.out.println("调用了sessionCreate方法!!");
            System.out.println("当前在线人数:"+count);
        }
    
        public void sessionDestroyed(HttpSessionEvent se) {
            /* Session is destroyed. */
            ServletContext servletContext = se.getSession().getServletContext();
            int count = (int) servletContext.getAttribute("count");
            servletContext.setAttribute("count",--count);
            System.out.println("调用了sessionDestroy方法!!");
            System.out.println("当前在线人数:"+count);
        }
    
        public void contextInitialized(ServletContextEvent sce) {
          /* This method is called when the servlet context is
             initialized(when the Web application is deployed).
             You can initialize servlet context related data here.
          */
            ServletContext servletContext = sce.getServletContext();
            servletContext.setAttribute("count",0);
        }
    
        public void contextDestroyed(ServletContextEvent sce) {
          /* This method is invoked when the Servlet Context
             (the Web application) is undeployed or
             Application Server shuts down.
          */
        }
    
        // -------------------------------------------------------
        // HttpSessionListener implementation
        // -------------------------------------------------------
    
        // -------------------------------------------------------
        // HttpSessionAttributeListener implementation
        // -------------------------------------------------------
    
        public void attributeAdded(HttpSessionBindingEvent sbe) {
          /* This method is called when an attribute 
             is added to a session.
          */
        }
    
        public void attributeRemoved(HttpSessionBindingEvent sbe) {
          /* This method is called when an attribute
             is removed from a session.
          */
        }
    
        public void attributeReplaced(HttpSessionBindingEvent sbe) {
          /* This method is invoked when an attibute
             is replaced in a session.
          */
        }
    }

    在web.xml中注册监听器

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <listener>
            <listener-class>ServletListener</listener-class>
        </listener>
    </web-app>

    用不同的游览器模拟不同的用户访问网站

    百度网盘链接:链接: https://pan.baidu.com/s/10ifAib4iOwb9T1lO-fhl0Q 提取码: ijfa 

  • 相关阅读:
    hihoCoder week20 线段树的区间修改
    hihoCoder week19 RMQ问题再临-线段树 单点更新 区间查询
    hihoCoder week17 最近公共祖先·三 lca st表
    hihoCoder week16 RMQ-ST算法
    hihoCoder week15 最近公共祖先·二
    eclipse 分屏显示同一文件
    eclipse 每次以debug方式启动springboot之后都会在SilentExitExceptionHandler类中的throw new SilentExitException()处断开,但是我明明没有下断点啊
    eclipse alt+/智能提示错误问题
    SpringBoot 之 普通类获取Spring容器中的bean
    kafka常用命令
  • 原文地址:https://www.cnblogs.com/xjtsh/p/10609074.html
Copyright © 2011-2022 走看看