监听器----笔记

三类监听器

第一类:初始化创建和销毁监听器
接口
ServletRequestListener
ServletContextListener
HttpSessionListener
分别监听请求域对象、web应用域对象、session域对象创建时和销毁时的动作;

第二类:属性增删改监听器
接口
ServletRequestAttributeListener
ServletContextAttributeListener
HttpSessionAttributeListener
分别监听 请求域内、web应用域内、session会话域内属性的增删改动作;

注意:以上两类监听器需要在web.xml中进行注册
注册形式如下

  <listener>
  	<listener-class>top.demo.list.TestListen</listener-class>
  </listener>

==========================
第三类:session关联对象监听器
接口
HttpSessionBindingListener
监听实现该接口的对象被session绑定和取消绑定时的动作(如:class AAA实现该接口 ,session中添加属性 value为AAA的实例对象,那么该接口的有关方法会被调用)

HttpSessionActivationListener
监听实现该接口的对象被session绑定后活化和钝化的动作
(如上述AAA类对象又实现了该接口,被添加入session。
web服务器停止且session尚未过期,那么session需要被序列化到硬盘
【意味着AAA类还需要实现Serializable接口】
,此时该对象被钝化,触发监听器的sessionWillPassivate方法;
服务器启动,session重新被加载入内存,该对象也被加载入内存 称为活化,触发该接口sessionDidActivate方法

===================================================================
代码

第一类

package top.demo.list;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;



public class TestListen implements ServletRequestListener,ServletContextListener,HttpSessionListener{

	@Override
	public void requestDestroyed(ServletRequestEvent sre) {
		
		System.out.println("requestDestroyed");
	}
	
	@Override
	public void requestInitialized(ServletRequestEvent sre) {
		System.out.println("requestInitialized");
	}
	
	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("contextDestroyed");
	}
	
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("contextInitialized");
	}
	
	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		System.out.println("sessionDestroyed");
	}
	
	
	@Override
	public void sessionCreated(HttpSessionEvent se) {
		System.out.println("sessionCreated");
	}
}

第二类

package top.demo.list;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class TestAttr implements ServletRequestAttributeListener,ServletContextAttributeListener,HttpSessionAttributeListener{

	@Override
	public void attributeAdded(HttpSessionBindingEvent event) {
			System.out.println("attributeAdded  and HttpSessionBindingEvent");
	}
	
	@Override
	public void attributeRemoved(HttpSessionBindingEvent event) {
		System.out.println("attributeRemoved and HttpSessionBindingEvent");
	}
	
	
	@Override
	public void attributeReplaced(HttpSessionBindingEvent event) {
		System.out.println("attributeReplaced and HttpSessionBindingEvent");
	}
	
	
	
	
	@Override
	public void attributeAdded(ServletContextAttributeEvent event) {
		System.out.println("attributeAdded and ServletContextAttributeEvent");
	}
	

	@Override
	public void attributeRemoved(ServletContextAttributeEvent event) {
		System.out.println("attributeRemoved and ServletContextAttributeEvent");
	}
	
	@Override
	public void attributeReplaced(ServletContextAttributeEvent event) {
		System.out.println("attributeReplaced and ServletContextAttributeEvent");
	}
	
	
	
	
	
	
	@Override
	public void attributeAdded(ServletRequestAttributeEvent srae) {
		System.out.println("attributeAdded and ServletRequestAttributeEvent");
	}
	

	
	@Override
	public void attributeRemoved(ServletRequestAttributeEvent srae) {
		System.out.println("attributeRemoved and ServletRequestAttributeEvent");
	}
	


	@Override
	public void attributeReplaced(ServletRequestAttributeEvent srae) {
		System.out.println("attributeReplaced and ServletRequestAttributeEvent");
	}
	
	
}

第三类

package top.demo.list;

import java.io.Serializable;

import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;

public class Man implements HttpSessionBindingListener,HttpSessionActivationListener,Serializable{
    
	private static final long serialVersionUID = 1L;
	
	@Override
	public void valueBound(HttpSessionBindingEvent event) {
		System.out.println("valueBound");
	}
	
	@Override
	public void valueUnbound(HttpSessionBindingEvent event) {
		System.out.println("valueUnbound");
	}
	
	@Override
	public void sessionDidActivate(HttpSessionEvent se) {
		System.out.println("sessionDidActivate 活化");
	}
	
	
	@Override
	public void sessionWillPassivate(HttpSessionEvent se) {
		System.out.println("sessionWillPassivate 钝化");
	}
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值