跳过正文
  1. 文章/
  2. Java/
  3. JavaEE/
  4. JavaWeb/

7、Listener

·598 字·2 分钟· loading · loading · ·
Java JavaEE JavaWeb
GradyYoung
作者
GradyYoung
JavaWeb - 点击查看当前系列文章
§ 7、Listener 「 当前文章 」

Listener
#

监听器,是JavaWeb三大组件之一,用于监听JavaWeb程序中的事件,例如创建、修改、删除Session、request、context等,并触发响应事件

八种监听器
#

不同功能的监听器,需要实现不同的Listener接口,一个监听器也可以实现多个Listener接口,实现不同的功能

监听器分类 监听器名称 作用
ServletContext监听 ServletContextListener 用于对ServletContext对象进行监听(创建、销毁)
ServletContext监听 ServletContextAttributeListener 对ServletContext对象中属性的监听(增删改)
Session监听 HttpSessionListener 对Session对象的整体状态的监听(创建、销毁)
Session监听 HttpSessionAttributeListener 对Session对象中的属性监听(增删改)
Session监听 HttpSessionBindingListener 监听对象于Session的绑定和解除
Session监听 HttpSessionActivationListener 对Session数据的钝化和活化的监听
Request监听 ServletRequestListener 对Request对象进行监听(创建、销毁)
Request监听 ServletRequestAttributeListener 对Request对象中属性的监听(增删改)

使用
#

1、实现对应功能的接口
#

package top.ygang.listener;

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

public class MyListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {

    }
}

2、配置Listener
#

在web.xml文件中配置
#

<listener>
    <listener-class>top.ygang.listener.MyListener</listener-class>
</listener>

使用注解
#

@WebListener

使用场景
#

监控网站登录人数
#

@WebListener
public class MyListener implements HttpSessionAttributeListener,HttpSessionListener{
    //监控网站新增登录
    @Override
    public void attributeAdded(HttpSessionBindingEvent se) {
        ServletContext servletContext = se.getSession().getServletContext();
        Integer loginCount = (Integer) servletContext.getAttribute("loginCount");
        if (loginCount == null){
            servletContext.setAttribute("loginCount",1);
        }else {
            servletContext.setAttribute("loginCount",loginCount + 1);
        }
    }
    //监控网站退出登录
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        ServletContext servletContext = se.getSession().getServletContext();
        Integer loginCount = (Integer) servletContext.getAttribute("loginCount");
        servletContext.setAttribute("loginCount",loginCount - 1);
    }
}
JavaWeb - 点击查看当前系列文章
§ 7、Listener 「 当前文章 」