欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Listener】属性监听器

程序员文章站 2022-05-01 13:01:23
...

域对象中属性变更的事件监听器用来监听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中有数据被替换了”。

相关标签: Listener Listener