JavaWeb22(监听器)

监听器的种类非常多 想做什么监听器 就实现什么监听器接口就行

编写Session监听器示例

1.实现session监听器接口

package com.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

//统计在线人数,一般统计session
public class OnlineCountListener implements HttpSessionListener {
    
    

    //创建session监听
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
    
    
        ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
        Integer onlineCount = (Integer) servletContext.getAttribute("onlineCount");
        //onlineCount为空说明 这是访问本站的第一个用户 给onlineCount赋值1 
        if (onlineCount==null){
    
    
            onlineCount=new Integer(1);
        }else{
    
    
            int count = onlineCount.intValue();
            onlineCount=new Integer(count+1);
        }
        servletContext.setAttribute("onlineCount",onlineCount);
    }

    //销毁session监听
    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
    
    
        ServletContext servletContext = httpSessionEvent.getSession().getServletContext();
        Integer onlineCount = (Integer) servletContext.getAttribute("onlineCount");
        if (onlineCount==null){
    
    
            onlineCount=new Integer(0);
        }else{
    
    
            int count = onlineCount.intValue();
            onlineCount=new Integer(count--);
        }
        servletContext.setAttribute("onlineCount",onlineCount);
    }

}

2.在web.xml中注册监听器

<!--    注册监听器-->
    <listener>
        <listener-class>com.listener.OnlineCountListener</listener-class>
    </listener>

3.页面代码

 <%@ 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>

网页测试

在这里插入图片描述

打开两个网页时:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_51224492/article/details/119834924