Listener(监听器)

监听器也是Servlet三大组件之一。监听器可以监听一些对象或对象属性状态的变化。

Web事件:

  • 事件源:Web对象,例如:HttpSession对象、ServletRequest对象、ServletContext对象。
  • 事件类型:ServletContextEvent、ServletRequestEvent、HttpSessionEvent、ServletContextAttributeEvent、ServletRequestAttributeEvent、HttpSessionAttributeEvent。
  • 事件监听器:ServletContextListener、ServletRequestListener、HttpSessionListener、ServletContextAttributeListener、ServletRequestAttributeListener、HttpSessionAttributeListener。
  • 处理函数:监听器中的一些处理方法。

监听对象状态的监听器

ServletContextListener:监听Servlet对象状态的监听器。

HttpSessionListener:监听Session对象状态的监听器。

ServletRequestListener:监听Request对象状态的监听器。


下面以ServletContextListener为例介绍:

ServletContextListener用于监听ServletContext对象状态的变化。例如:创建ServletContext,销毁ServletContext。当项目启动的时候,容器会创建ServletContext对象,如果配置了ServletContextListener监听器,那么就可以在项目启动的时候加入一些处理。

  • 使用监听器的步骤:

第一步:定义一个类,实现监听器接口,并实现监听器的所有方法;

public class ContextListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContext被创建...");
    }

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

第二步:在web.xml中配置监听器;

<listener>
    <listener-class>com.tung.listener.ContextListener</listener-class>
  </listener>

监听对象属性状态的监听器

ServletContextAttributeListener:监听Servlet对象属性状态的监听器。

HttpSessionAttributeListener:监听Session对象属性状态的监听器。

ServletRequestAttributeListener:监听Request对象属性状态的监听器。


下面以HttpSessionAttributeListener为例介绍:

HttpSessionAttributeListener用于监听Sessiont对象属性状态的变化。例如:添加属性、删除属性、修改属性。

public class SessionAtrributeListener implements HttpSessionAttributeListener {
    // 往Session对象中添加属性的时候自动调用
    @Override
    public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("添加属性");
        System.out.println("属性名:"+httpSessionBindingEvent.getName());
        System.out.println("属性值:"+httpSessionBindingEvent.getValue());
    }
    // 往Session对象中删除属性的时候自动调用
    @Override
    public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("删除属性");
        System.out.println("属性名:"+httpSessionBindingEvent.getName());
        System.out.println("属性值:"+httpSessionBindingEvent.getValue());
    }
    // 往Session对象中修改属性的时候自动调用
    @Override
    public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("修改属性");
        System.out.println("属性名:"+httpSessionBindingEvent.getName());
        System.out.println("属性值:"+httpSessionBindingEvent.getValue());
    }
}

配置属性监听器
在web.xml配置属性监听器

<listener>
    <listener-class>com.tung.listener.SessionAtrributeListener</listener-class>
  </listener>

零配置(注解)

@WebListener配置监听器。

@WebListener
public class SessionAtrributeListener implements HttpSessionAttributeListener {

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值