Java Web之Listener(监听器)

一、监听器简介

1、定义

Servlet规范中定义的一种特殊的组件,用来监听Servlet容器产生的事件并进行相应的处理。

2、监听器术语

  • 事件源:被监听的对象;
  • 监听器:监听事件源对象;
  • 注册监听器:监听器和事件源绑定
  • 事件:事件源行为触发的监听行为。

二、Listener API详解

1、监听域对象创建与销毁

ServletRequestListener::监听ServletRequest对象的创建和销毁

void requestInitialized(ServletRequestEvent sre):接收ServletRequest即将超出web应用程序范围的通知。

void requestDestroyed(ServletRequestEvent sre):接收ServletRequest即将进入web应用程序范围的通知。

HttpSessionListener:监听HttpSession对象的创建和销毁

void sessionCreated(HttpSessionEvent se):接收会话已创建的通知。

void sessionDestroyed(HttpSessionEvent se):接收会话即将失效的通知。

ServletContextListener:监听web上下文的初始化与销毁

void contextInitialized(ServletContextEvent sce):接收web应用程序初始化进程正在启动的通知。

void contextDestroyed(ServletContextEvent sce):接收ServletContext即将关闭的通知。

2、监听域对象属性变更(添加、替换、删除)

ServletRequestAriibuteListenr:监听ServletRequest对象属性的增加、删除和属性的变化

void attributeAdded(ServletRequestAttributeEvent srae):接收属性已添加到ServletRequest的通知。

void attributeRemoved(ServletRequestAttributeEvent srae):接收已从ServletRequest中移除属性的通知。

void attributeReplaced(ServletRequestAttributeEvent srae):接收ServletRequest上已替换属性的通知。

HttpSessionAttributeListener:监听HttpSession属性的增加、删除和属性的变化

void attributeAdded(HttpSessionBindingEvent event):接收属性已添加到会话的通知。

void attributeRemoved(HttpSessionBindingEvent event):接收已从会话中删除属性的通知。

void attributeReplaced(HttpSessionBindingEvent event):接收会话中已替换属性的通知。

ServletContextAttibuteListener:监听ServletContext对象的属性增加、删除和属性的变化

void attributeAdded(ServletContextAttributeEvent event):接收属性已添加到ServletContext的通知。

void attributeRemoved(ServletContextAttributeEvent event):接收属性已从ServletContext中移除的通知。

void attributeReplaced(ServletContextAttributeEvent event):接收属性已从ServletContext中修改的通知。

3、监听Session作用域特殊Javabea

绑定状态:就一个对象被放到session域中;

解绑状态:就是这个对象从session域中移除了;

钝化状态:是将session内存中的对象持久化(序列化)到磁盘;

活化状态:就是将磁盘上的对象再次恢复到session内存中。

3.1、HttpSessionBindingListener:监听session绑定与解绑javaBean

void valueBound(HttpSessionBindingEvent event):通知对象它正被绑定到会话并标识该会话。

void valueUnbound(HttpSessionBindingEvent event):通知对象它正在从会话解除绑定并标识会话。

3.2、HttpSessionActivationListener:监听javaBean对象的活化与钝化。

void sessionDidActivate(HttpSessionEvent se):通知会话被活化。

void sessionWillPassivate(HttpSessionEvent se):会话即将被钝化的通知。

四、Listener的使用

1、Listener的快速入门

1.1、编写一个类,实现监听器接口;

package com.wedu.demo.servlet;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * 监听器快速入门
 */
public class ListenerDemo implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("应用程序开始初始化……");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("销毁ServletContext对象……");
    }
}

1.2、配置监听器

web.xml方式配置

<!--配置监听器-->
<listener>
    <listener-class>com.wedu.demo.ListenerDemo</listener-class>
</listener>

注解方式配置

             

2、Listener开发的注意项

多个Listener的执行顺序:同一个应用里面多个监听器,按在web.xml的注册顺序,依次执行。

五、Listener的应用

1、统计当前在线用户数量

2、自定义session扫描器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值