监听器学习笔记

问题
在 Servlet 技 术 中 我 们 学 习 了 request 、 session 、 application 作用域对象,其主要作用是实现数据的在不同 场景中的灵活流转。但是数据的具体流转过程我们是看不 到的,比如作用域对象是什么时候创建和销毁的,数据是 什么时候存取,改变和删除的。因为具体的流转过程看不 到,所以也就无法再指定的时机对数据和对象进行操作, 比如 session 销毁的时候,在线人数-1。

解决
使用监听器

概念
Servlet 监听器是 Servlet 规范中定义的一种特殊类,用 于监听 ServletContext、HttpSession 和 ServletRequest 等域 对象的创建与销毁事件,以及监听这些域对象中属性发生 修改的事件。

监听对象
Request Session Application

监听内容
创建、销毁、属性改变事件

监听作用
在事件发生之前,之后进行一些处理,比如统计在线 人数

使用
监听 request 监听 session 监听 application

案例
统计网站在线人数。

/**
 * 监听器的使用:
 * 	作用:
 * 		监听作用域对象request、session、application的创建、销毁和内容的改变
 * 	使用:
 * 		创建一个实现了指定接口的java类
 * 			监听request--->ServletRequestListener  监听request对象的创建和销毁
 * 				requestInitialized(ServletRequestEvent sre)//创建
 * 				requestDestroyed(ServletRequestEvent sre)//销毁
 * 				注意:
 * 					形参可以获取监听的request对象
 * 					sre.getServletRequest();
 *			监听request--->ServletRequestAttributeListener  监听request作用域数据的变更。
				attributeAdded(ServletRequestAttributeEvent srae)
 * 				attributeRemoved(ServletRequestAttributeEvent srae)	
 * 				attributeReplaced(ServletRequestAttributeEvent srae)
 * 				注意:形参可以获取被监听的数据	
 * 					srae.getName()  获取监听数据的键
 * 					srae.getValue() 获取监听数据的值
 *			监听session--->HttpSessionListener 监听session的创建和销毁
 *				sessionCreated(HttpSessionEvent se)  创建
 *				sessionDestroyed(HttpSessionEvent se) 销毁
 *				注意:形参可以获取被监听的session对象
 *					se.getSession();
 *			监听session--->HttpSessionAttributeListener 监听session数据的变更
 *				attributeAdded(HttpSessionBindingEvent event)
 *				attributeRemoved(HttpSessionBindingEvent event)
 *				attributeReplaced(HttpSessionBindingEvent event)
 *				注意:形参可以获取被监听的数据
 *					event.getName() 	获取数据的键名
 *					event.getValue()	获取数据的值
 *			监听application--->ServletContextListener 监听application对象的初始化和销毁
 *				contextInitialized(ServletContextEvent sce) 初始化    服务器启动
 *				contextDestroyed(ServletContextEvent sce)	销毁	     服务器关闭
 *				注意:
 *					形参可以获取当前application对象。
 *					sce.getServletContext();
 			监听application--->ServletContextAttributeListener 监听数据的变更
 					attributeAdded(ServletContextAttributeEvent event)
 *					attributeRemoved(ServletContextAttributeEvent event)
 *					attributeReplaced(ServletContextAttributeEvent event)
 *				注意:
 *					形参可以获取当前监听的数据
 *					event.getName()  获取数据的键名
 *					event.getValue() 获取数据的值
 * 		在web.xml中配置监听器类
 * 			<listener>
				<listener-class>com.bjsxt.listener.MyListener</listener-class>
			</listener>
		案例:
			统计当前在线人数。
			统计网页浏览器次数。
 * 
 */

参考代码:

ManagerSystem里的:
MyListener.java
TestServlet.java
web.xml

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值