JavaWeb的Listener监听器

1.什么是监听器?

(1)监听器是Servlet规范中的一员。在Servlet中,所有的监听器接口都是以“Listener”结尾.

(2)监听器中的方法不需要程序员手动调用,是发生某个特殊事件之后被服务器调用的。

  (3)监听器仅仅是对三大域对象做相关的时间监听。

2.监听器有什么用?

(1)监听器实际上是Servlet规范留给我们javaweb程序员去执行某段代码的特殊时机。
(2)如果在特殊的时刻想执行一段代码,你需要想到使用对应的监听器。

3.监听器的分类

web中定义八个监听器接口作为监听器器的规范,这八个接口按照不同的标准可以形成不同的分类;
(1)按监听的对对象划分:
①applicationֿ域监听器: ServletContextListener、ServletContextAttributeListener;
②sessionֿ域监听器:HttpSessionListener、HttpSessionAttributeListener、 HttpSessionBindingListener、HttpSessionActivationListener;
③requestֿ监听器:ServletRequestListener、ServletRequestAttributeListener ;
(2)按监听的事件分:
ֿ①域对象的创建和销毁监听器:ServletContextListener、HttpSessionListener、ServletRequestListener;
②域对象数据增删改事件监听器:ServletContextAttributeListener、 HttpSessionAttributeListener、ServletRequestAttributeListener;
③其他监听器:HttpSessionBindingListener、HttpSessionActivationListener;

4.Servlet规范中提供了哪些监听器?

4.1 application域监听器

(1)ServletContextListener:监听ServletContext对象的创建与销毁。

public interface ServletContextListener extends EventListener {
    public default void contextInitialized(ServletContextEvent sce) {
	// 这个方法是在ServletContext对象被创建的时候调用
    }
    public default void contextDestroyed(ServletContextEvent sce) {
    // 这个方法是在ServletContext对象被销毁的时候调用
    }
}

(2)ServletContextAttributeListener:监听ServletContext中属性的添加、移除和修改。
①attributeAdded(ServletContextAttributeEvent scab):向ServletContext中添加属性时调用
②attributeRemoved(ServletContextAttributeEvent scab):向ServletContext中移除属性时调用
③attributeReplaced(ServletContextAttributeEvent scab):当ServletContext中的属性被修改时调用

4.2 session域监听器

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

public interface HttpSessionListener extends EventListener {
    public default void sessionCreated(HttpSessionEvent se) {
     // session创建的时候被调用
    }
    public default void sessionDestroyed(HttpSessionEvent se) {
   // session销毁的时候被调用
    }
}

(3)HttpSessionBindingListener

● 该监听器不需要使用@WebListener进行标注。
● 假设User类实现了该监听器,那么User对象在被放入session的时候触发“绑定”事件,User对象从session中删除的时候,触发
”解绑“事件。

@Data
public class User implements HttpSessionBindingListener {
    @Override
    public void valueBound(HttpSessionBindingEvent event) {
        // 绑定数据时调用
    }
    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
		// 解绑数据时调用
    }
    // 构造方法, Getter/Setter方法
    private String username;
    private Integer password;
}

(4)HttpSessionIdListener
● session的id发生改变的时候,监听器中的唯一一个方法就会被调用。
(5)HttpSessionActivationListener
● 监听session对象的钝化和活化的。
● 钝化:session对象从内存存储到硬盘文件。
● 活化:从硬盘文件把session恢复到内存。

public interface ServletRequestListener extends EventListener {
    public default void requestDestroyed (ServletRequestEvent sre) {
    // request对象销毁时间点被调用
    }
    public default void requestInitialized (ServletRequestEvent sre) {
    // request对象创建时间点被调用
} }

4.3 request域监听器

(1)ServletRequestListener

public interface ServletRequestListener extends EventListener {
    public default void requestDestroyed (ServletRequestEvent sre) {
    // request对象销毁时间点被调用
    }
    public default void requestInitialized (ServletRequestEvent sre) {
    // request对象创建时间点被调用
} }

(2)ServletRequestAttributeListener

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值