35.监听器listener

监听器接口:

一、监听对象创建/销毁的监听器接口

         Interface ServletRequestListener     监听request对象的创建或销毁

         Interface HttpSessionListener        监听session对象的创建或销毁

         Interface ServletContextListener     监听servletContext对象的创建或销毁

二、监听对象属性的变化

         Interface ServletRequestAttributeListener 监听request对象属性变化: 添加、移除、修改

         Interface HttpSessionAttributeListener    监听session对象属性变化: 添加、移除、修改

         Interface ServletContextAttributeListener  监听servletContext对象属性变化

 

三、session相关监听器

         Interface HttpSessionBindingListener   监听对象绑定到session上的事件     

         Interface HttpSessionActivationListener(了解) 监听session序列化及反序列化的事件

public class MyRequestListener implements ServletRequestListener{

	// 对象销毁
	@Override
	public void requestDestroyed(ServletRequestEvent sre) {
		// 获取request中存放的数据
		Object obj = sre.getServletRequest().getAttribute("cn");
		System.out.println(obj);
		System.out.println("MyRequestListener.requestDestroyed()");
	}

	// 对象创建
	@Override
	public void requestInitialized(ServletRequestEvent sre) {
		System.out.println("MyRequestListener.requestInitialized()");
	}
}

public class MyServletContextListener implements ServletContextListener{

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("MyServletContextListener.contextDestroyed()");
	}

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("1..........MyServletContextListener.contextInitialized()");
	}

}

public class MySessionListener implements HttpSessionListener{

	// 创建
	@Override
	public void sessionCreated(HttpSessionEvent se) {
		System.out.println("MySessionListener.sessionCreated()");
	}

	// 销毁
	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		System.out.println("MySessionListener.sessionDestroyed()");
	}

}
<!-- 监听request对象创建、销毁 -->
	<listener>
		<listener-class>cn.itcast.a_life.MyRequestListener</listener-class>
	</listener>
	<!-- 监听session对象创建、销毁 -->
	<listener>
		<listener-class>cn.itcast.a_life.MySessionListener</listener-class>
	</listener>

	<!-- 监听servletContext对象创建、销毁 -->
	<listener>
		<listener-class>cn.itcast.a_life.MyServletContextListener</listener-class>
	</listener>

2.属性类

public class MySessionAttrListener implements HttpSessionAttributeListener {

	// 属性添加
	@Override
	public void attributeAdded(HttpSessionBindingEvent se) {
		// 先获取session对象
		HttpSession session = se.getSession();
		// 获取添加的属性
		Object obj = session.getAttribute("userName");
		// 测试
		System.out.println("添加的属性:" + obj);
	}

	// 属性移除
	@Override
	public void attributeRemoved(HttpSessionBindingEvent se) {
		System.out.println("属性移除");
	}

	// 属性被替换
	@Override
	public void attributeReplaced(HttpSessionBindingEvent se) {
		// 获取sesison对象
		HttpSession session = se.getSession();
		
		// 获取替换前的值
		Object old = se.getValue();
		System.out.println("原来的值:" + old);
		
		// 获取新值
		Object obj_new = session.getAttribute("userName");
		System.out.println("新值:" + obj_new);
		
	}

}
<listener>
		<listener-class>cn.itcast.b_attr.MySessionAttrListener</listener-class>
	</listener>

3.

public class Admin implements HttpSessionBindingListener {

	private int id;
	private String name;
	
	public Admin() {
		super();
	}
	public Admin(int id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	
	
	// 构造函数
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	// 对象放入session
	@Override
	public void valueBound(HttpSessionBindingEvent event) {
		System.out.println("Admin对象已经放入session");
	}
	// 对象从session中移除
	@Override
	public void valueUnbound(HttpSessionBindingEvent event) {
		System.out.println("Admin对象从session中移除!");
	}
	
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值