【监听器篇】2.监听request、session、ServletContext 对象存放的数据变化情况

1.工程说明

  在前一阶段介绍了监听器监听我们这三个对象创建和销毁的监听事件,现在我们要监听这三个对象存放属性的时候的一个监听事件。

  存放数据指的是这三个对象在工程中setAttribute(),removeAttribute()的时候,我们的监听器就会知道,然后在对应的方法中执行相应的操作。

  以下是定义这三个对象需要实现的接口:

    监听器的接口----监听对象
    ServletContextAttributeListener----ServletContext对象中的属性的变化情况
    HttpSessionAttributeListener----session对象中的属性的变化情况
    ServletRequestAttributeListener----request对象中的属性的变化情况

    实现以上监听器需要重写的方法都一样:添加 、删除 、 修改的方法名称全部一致

  当我们在代码中添加,删除,修改属性的时候,监听器都会收到信息,然后执行相应的代码。

  这三个对象需要实现的方法都一样,行为也差不多,所以在此演示session对象添加,删除,替换属性时,我们监听器所做的操作。

基本步骤:
1.定义一个实现HttpSessionAttributeListener的监听器
2.采用注解的方式注册监听器
3.在实现的三个方法内向控制台打印相应的信息

4.在jsp中写一段代码:在session对象中添加,修改,替换属性

在此附上工程的下载地址

2.定义监听器MyHttpSessionAttributeListener

package listener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

/*
 * 2018.5.15
 * @author Dragon
 * 监听session属性变化的监听器
 */
@WebListener
public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener {

	@Override
	public void attributeAdded(HttpSessionBindingEvent arg0) {
		System.err.println("MyHttpSessionAttributeListener----------attributeAdded");
	}

	@Override
	public void attributeRemoved(HttpSessionBindingEvent arg0) {
		System.err.println("MyHttpSessionAttributeListener----------attributeRemoved");
	}

	@Override
	public void attributeReplaced(HttpSessionBindingEvent arg0) {
		System.err.println("MyHttpSessionAttributeListener----------attributeReplaced");
	}

}

在上面的代码中,我们在相应的方法中打印了相应的信息。同时采用注解的方式对我们的监听器进行了注册。

3.给session对象存放数据

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<%

        //添加数据
		session.setAttribute("test", "Dragon");
        //替换数据
		session.setAttribute("test", "long");
        //删除数据
		session.removeAttribute("test");
%>

4.部署工程并运行

运行结果:

MyHttpSessionAttributeListener----------attributeAdded
MyHttpSessionAttributeListener----------attributeReplaced

MyHttpSessionAttributeListener----------attributeRemoved

ok了,从上面可以发现当我们session对属性执行相应的操作的时候,监听器会知道并向控制台打印相应的信息。同理,监听这两个对象request,ServletContext需要执行的操作也一样,不一样的是实现的接口不一样。

5.下一阶段的学习

  到目前为止,学习了两类监听器,分别是监听对象创建和销毁的监听器和监听对象存放数据的监听器,接下来要学习的是:监听session中保存的javabean状态的监听器。

  加油~继续前行!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值