监听器

监听器

  • Listener :监听器,用于监听用户的操作

  • 监测网站在线人数(基于session)

    1、编写一个监听器,实现HttpSessionListener

    public class ListenerDemo implements HttpSessionListener {
        /**
         * 监听session新创建时执行的方法
         * @param httpSessionEvent
         */
        @Override
        public void sessionCreated(HttpSessionEvent httpSessionEvent) {
            ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
            System.out.println("sessionId:" + httpSessionEvent.getSession().getId());
            Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");
            if (onlineCount == null) {
                onlineCount = 1;
            } else {
                onlineCount++;
            }
            servletContext.setAttribute("OnlineCount",onlineCount);
        }
    
        /**
         * 监听session销毁时执行方法
         * @param httpSessionEvent
         */
        @Override
        public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
            ServletContext sc = httpSessionEvent.getSession().getServletContext();
            Integer onlineCount = (Integer) sc.getAttribute("OnlineCount");
            if (onlineCount == null) {
                onlineCount = 0;
            } else {
                onlineCount--;
            }
            System.out.println("销毁session了--监听到");
            sc.setAttribute("OnlineCount",onlineCount);
        }
    }
    
  • 在jsp中对人数进行取出展示

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
</head>
<body>
<h1>当前有 <span><%=this.getServletConfig().getServletContext().getAttribute("OnlineCount")%></span>人在线</h1>
</body>
</html>
  • 配置对应的web.xml文件
<!--    注册监听器-->
<listener>
  <listener-class>com.saxon.listener.ListenerDemo</listener-class>
</listener>

session销毁方法

  • 手动销毁 getSession().invalidate();
  • 自动销毁 在web.xml中设置超时时间
 <session-config>
    <session-timeout>1</session-timeout>
  </session-config>
posted @ 2021-05-27 13:34  saxon宋  阅读(37)  评论(0)    收藏  举报