【Listener】属性监听器

域对象中属性变更的事件监听器用来监听ServletContext、HttpSession和HttpServletRequest 这三个对象中的属性变更信息事件的监听器。这三个监听器接口分别是ServletContextAttributeListener、HttpSessionAttributeListener和ServletRequestAttributeListener,这三个接口中都定义了三个方法来处理被监听对象中属性的增加、删除和替换事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同。

以HttpSessionAttributeListener为例:

创建HttpSessionAttributeListener监听器:

  • 1、创建一个普通Java类,实现HttpSessionAttributeListener接口
  • 2、(eclipse)直接创建一个Listener,选择实现HttpSessionAttributeListener接口

配置web.xml:

  • 1、如果直接创建的Listener,则web.xml会自动配置该监听器的url路径
  • 2、如果是创建的Java类然后实现的HttpSessionAttributeListener接口,则需要配置web.xml:
    <listener>
    	<listener-class>HttpSessionAttributeListener实现类的路径</listener-class>
    </listener>
    

在监听器中实现HttpSessionAttributeListener接口的3个抽象方法:

  • 1、attributeAdded():向HttpSession对象中添加数据时自动执行该方法
  • 2、attributeReplaced():向HttpSession对象中添加键名已经存在的数据,实质上是将原来的数据用新数据替换了,此时会自动执行该方法
  • 3、attributeRemoved():删除HttpSession对象中的数据时会自动执行该方法

例:

package cn.jingpengchong.listener;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class SessionAttributeListener implements HttpSessionAttributeListener {

    public void attributeAdded(HttpSessionBindingEvent arg0)  { 
         System.out.println("有数据被添加到Session中了");
    }
    public void attributeRemoved(HttpSessionBindingEvent arg0)  { 
    	System.out.println("Session中有数据被删除了");
    }
    public void attributeReplaced(HttpSessionBindingEvent arg0)  { 
    	System.out.println("Session中有数据被替换了");
    }	
}

当执行“session.setAttribute(“name”, “孙悟空”);”时,会在eclipse控制台输出“有数据被添加到Session中了”;
当执行“session.setAttribute(“name”, “猪八戒”);”时,会在eclipse控制台输出“Session中有数据被删除了”;
当执行“session.removeAttribute(“name”);”时,会在eclipse控制台输出“Session中有数据被替换了”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值