JSP学习之监听器详解

17 篇文章 0 订阅
13 篇文章 0 订阅

监听器的概念和作用

  • 问题
    在Servlet技术中我们学习了Request、session、application作用域对象,其主要作用是实现数据在不同场景中的灵活流转。但是数据的具体流转过程我们是看不到的,比如作用域对象时什么时候创建和销毁的,数据是什么时候存取、改变和删除的。因为具体的流转过程看不到,所以也就无法再指定的时机对数据和对象进行操作,比如session销毁的时候,在线人数-1;
  • 解决
    使用监听器
  • 概念
    Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext、HTTPSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件。
  • 监听对象
    Request
    Session
    Application
  • 监听内容
    创建、销毁、属性改变事件。
  • 监听作用
    监听作用域对象request、session、application的创建、销毁和内容的改变
    在事件发生之前,之后进行一些处理,比如统计在线人数。
  • 使用
    (1)创建一个实现了指定接口的java类
监听对象实现接口作用
requestServletRequestListener监听request对象的创建和销毁
requestServletRequestAttributeListener监听request作用域数据变更
sessionHttpSessionListener监听session对象的创建和销毁
sessionHttpSessionAttributeListener监听session作用域数据变更
applicationServletContextListener监听application对象的创建和销毁
applicationServletContextAttributeListener监听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对象销毁时,说明用户退出,就可以对在线人数进行减一的操作。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值