JSP学习之监听器详解

监听器的概念和作用

  • 问题
    在Servlet技术中我们学习了Request、session、application作用域对象,其主要作用是实现数据在不同场景中的灵活流转。但是数据的具体流转过程我们是看不到的,比如作用域对象时什么时候创建和销毁的,数据是什么时候存取、改变和删除的。因为具体的流转过程看不到,所以也就无法再指定的时机对数据和对象进行操作,比如session销毁的时候,在线人数-1;
  • 解决
    使用监听器
  • 概念
    Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext、HTTPSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件。
  • 监听对象
    Request
    Session
    Application
  • 监听内容
    创建、销毁、属性改变事件。
  • 监听作用
    监听作用域对象request、session、application的创建、销毁和内容的改变
    在事件发生之前,之后进行一些处理,比如统计在线人数。
  • 使用
    (1)创建一个实现了指定接口的java类
监听对象 实现接口 作用
request ServletRequestListener 监听request对象的创建和销毁
request ServletRequestAttributeListener 监听request作用域数据变更
session HttpSessionListener 监听session对象的创建和销毁
session HttpSessionAttributeListener 监听session作用域数据变更
application ServletContextListener 监听application对象的创建和销毁
application ServletContextAttributeListener 监听application作用域数据变更

(2)在web.xml中配置监听器

<listener>
	<listener-class>com.czxy.listener.MyListener</listener-class>
</listener>

监听器方法的使用(request为例)

public class MyListener implements ServletRequestListener,ServletRequestAttributeListener{

	//ServletRequestListener,监听request创建和销毁
	public void requestDestroyed(ServletRequestEvent sre) {
		System.out.println("我被销毁了");
	}
	public void requestInitialized(ServletRequestEvent sre) {
		System.out.println("我被创建了");
	}
	
	//ServletRequestAttributeListener,监听request作用域改变
	public void attributeAdded(ServletRequestAttributeEvent srae) {
		System.out.println("增加");
		System.out.println("增加了一条数据:"+srae.getName()+":"+srae.getValue());
	}
	public void attributeRemoved(ServletRequestAttributeEvent srae) {
		System.out.println("删除");
	}
	public void attributeReplaced(ServletRequestAttributeEvent srae) {
		System.out.println("修改");
	}
}
注意:
	srae.getName():获取监听数据的键
	srae.getValue():获取监听数据的值
  • 类推:
    session和application对象同样有这五个方法,可以在对应的对象创建、销毁、新增、删除、修改时做一些事情。如:在session对象创建时,说明有用户登录,一个新的用户信息被存入session,就可以对在线人数进行加一的操作;当session对象销毁时,说明用户退出,就可以对在线人数进行减一的操作。
发布了45 篇原创文章 · 获赞 11 · 访问量 3900

猜你喜欢

转载自blog.csdn.net/qq_42197800/article/details/93416522