java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java 监听器Listener

Java中监听器Listener详解

作者:Zero摄氏度

Listener是由Java编写的WEB组件,主要完成对内置对象状态的变化 (创建、销毁)和属性的变化进行监听,做进一步的处理,主要对session和application内置对象监听,这篇文章主要介绍了Java中监听器Listener,需要的朋友可以参考下

1、Listener

2、对application监听

package cn.mldn.lxh.listener ;
import javax.servlet.* ;
public class ServletContextDemo
	implements ServletContextListener,ServletContextAttributeListener
{
	private ServletContext application = null ;
	// 实现方法
	public void contextInitialized(ServletContextEvent sce)
	{
		this.application = sce.getServletContext() ;
		System.out.println("** 上下文初始化 ...") ;
		System.out.println("** 当前虚拟目录的绝对路径:"+this.application.getRealPath("/")) ;
	}
	public void contextDestroyed(ServletContextEvent sce)
	{
		System.out.println("** 上下文销毁 ...") ;
	}
	public void attributeAdded(ServletContextAttributeEvent scab)
	{
		System.out.println("** 增加属性:"+scab.getName()+" --> "+scab.getValue()) ;
	}
	public void attributeRemoved(ServletContextAttributeEvent scab)
	{
		System.out.println("** 删除属性:"+scab.getName()+" --> "+scab.getValue()) ;
	}
	public void attributeReplaced(ServletContextAttributeEvent scab)
	{
		System.out.println("** 替换属性:"+scab.getName()+" --> "+scab.getValue()) ;
	}
};
/*
  <listener>
	<listener-class>cn.mldn.lxh.listener.ServletContextDemo</listener-class>
  </listener>
*/

1、语法 :

2、实现方法

实现的两个接口,一个是为了实现对application状态监听的方法,一个是为了实现对applciation属性的变化监听的方法。如下:

public void contextInitialized(ServletContextEvent sce);

tomcat一启动,先创建出监听器,对application的创建和销毁做监听。当application一创建,被监听器监听到,就调用contextInitialized()方法;

public void contextDestroyed(ServletContextEvent sce);

当application一销毁,监听器就会监听到applicaiton销毁,调用contextDestoryed();

对applicaiton里属性的变化做监听 , implements ServletContextAttributeListener

public void attributeAdded(ServletContextAttributeEvent scab)
public void attributeRemoved(ServletContextAttributeEvent scab)
public void attributeReplaced(ServletContextAttributeEvent scab)

通过实现ServletContextAttributeListener 的三个方法,对applcation的属性变化做监听。注意:监听到的都是已经完成的变化 。比如往application里设值属性、删除属性、替换属性值等,这些都会被监听器监听到。可以通过方法获得增加的属性名和属性值,获得删除的属性名和属性值,获得替换的属性名和替换前的属性值(是被替换的,而不是替换后的值)

3、Tomcat一启动,创建了哪些内置对象?

3、对session做监听

package cn.mldn.lxh.listener ;
import javax.servlet.http.* ;
public class HttpSessionDemo 
	implements HttpSessionListener,HttpSessionAttributeListener
{
	private HttpSession session ;
	// 实现方法
	public void sessionCreated(HttpSessionEvent se)
	{
		this.session = se.getSession() ;
		System.out.println("** Session 创建 ....") ;
		System.out.println("** SessionID --> "+this.session.getId()) ;
	}
	public void sessionDestroyed(HttpSessionEvent se)
	{
		System.out.println("** Session 销毁 ....") ;
	}
	public void attributeAdded(HttpSessionBindingEvent se)
	{
		System.out.println("** Session 增加属性:"+se.getName()+" --> "+se.getValue()) ;
	    System.out.println("** 获得Session "+se.getSession().getId()) ;
	}
	public void attributeRemoved(HttpSessionBindingEvent se)
	{
		System.out.println("** Session 删除属性:"+se.getName()+" --> "+se.getValue()) ;
	}
	public void attributeReplaced(HttpSessionBindingEvent se)
	{
		System.out.println("** Session 替换属性:"+se.getName()+" --> "+se.getValue()) ;
	}
};
/*
  <listener>
	<listener-class>cn.mldn.lxh.listener.HttpSessionDemo</listener-class>
  </listener>
*/

包声明包导入类声明,实现 HttpSessionListener接口,实现对状态监听的方法实现HttpSessionAttributeListener接口,实现对属性变化监听的方法

什么时候创建session?

我们可以通过public void sessionCreated(HttpSessionEvent se) 来监听session的创建

到此这篇关于Java中监听器Listener详解的文章就介绍到这了,更多相关java 监听器Listener内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文