Java-Web三大件之监听器Listener

Java-Web三大件之监听器Listener

一丶本质:

用于特定用途的servlet,作用是观察变化

二丶功能:

​ ●监听容器事件

​ ●某个web应用上下文的创建销毁

​ ●会话对象的创建销毁

​ ●会话属性信息增减

​ ●通过监听,可以在事件前后进行一些必要的准备和善后工作

​ ●在线人数统计

​ ●定时发送邮件

三丶Listener监听:

四丶Servlet中提供了8个监听器:

1.监听三个域对象的创建和销毁的监听器

对象类型对应的监听器
ServletContextServletContextListener
HttpSessionHttpSessionListener
HttpServletRequestServletRequestListener

2.监听三个域对象的属性变更的监听器.(属性添加,属性移除,属性替换)

对象类型对应的监听器
ServletContextServletContextAttributeListener
HttpServletRequestServletRequestAttributeListener
HttpSessionHttpSessionAttributeListener

3.监听HttpSession对象中的JavaBean的状态的改变.(绑定,解除绑定,钝化和活化)2个

对象类型对应的监听器
HttpSessionHttpSessionBindingListener(绑定,解除绑定)
HttpSessionHttpSessionActivationListener(钝化和活化)

五丶三类监听接口:

Servlet三个数据域对象:ServletContext,HttpSession,ServletRequest

1.按监听对象分:

  • ServletContext对象的监听器
  • HttpSession对象的监听器
  • ServletRequest对象的监听器

2.按监听事件分:

  • 对象自身的创建和销毁的监听器
  • 对象中属性的创建和消除的监听器
  • session中的某个对象的状态变化的监听器

六丶ServletContext监听:

1.ServletContextListener(监听创建销毁):

方法:

contextInitialized(ServletContextEvent sce) 监听创建contextDestroyed(ServletContextEvent sce) 监听销毁

①在服务器启动时,对一些对象进行初始化,并将对象保存到ServletContext数据范围中; — 全局数据
②对框架进行初始化 ,如Spring框架;
③实现任务调度(通过定时器 Timer、TimerTask 实现)

2.ServletContextAttributeListener(监听属性变更):

每种监听属性变更都有3个方法

attributeAdded 监听属性添加

​ 当数据范围对象没有该属性,第一次添加时调用执行 setAttribute(name,value);

attributeRemoved 监听属性移除

​ 从一个数据范围对象删除一个已经存在属性时执行 removeAttribute(name);

attributeReplaced 监听属性替换

​ 当一个数据范围已经存在一个属性,向数据范围添加相同名称的属性时,触发替换方法 — setAttribute(name,value);

七丶Session Listeners:

1.HttpSessionListener(监听创建销毁):

对HttpSession 数据对象创建和销毁的监听;

方法:

sessionCreated(HttpSessionEvent se) 监听Session对象创建
sessionDestroyed(HttpSessionEvent se) 监听Session对象销毁

Session 何时创建 : request.getSession()
Session 何时销毁(三种方式) :

关闭服务器、Session过期(默认30分钟,可通过web.xml配置)、session.invalidate

2.HttpSessionAttributeListener(监听属性变化):

每种监听属性变更都有3个方法

attributeAdded 监听属性添加

​ 当数据范围对象没有该属性,第一次添加时调用执行 setAttribute(name,value);

attributeRemoved 监听属性移除

​ 从一个数据范围对象删除一个已经存在属性时执行 removeAttribute(name);

attributeReplaced 监听属性替换

​ 当一个数据范围已经存在一个属性,向数据范围添加相同名称的属性时,触发替换方法 — setAttribute(name,value);

3.Session中数据对象本身状态监听器(Binding,Activation):

部分监听器不需要在 web.xml 中进行配置,因为状态监听器是由保存到session数据域中的对象本身去实现的,即由保存到session数据域中的对象的java类去实现监听器接口。

对象的四种状态:绑定/解除绑定; 钝化/活化

监听器接口:
   HttpSessionBindingListener:
     valueBound(HttpSessionBindingEvent event) 绑定对象方法
     valueUnbound(HttpSessionBindingEvent event) 解除绑定方法
   HttpSessionActivationListener:
     sessionDidActivate(HttpSessionEvent se) 感知对象被活化
     sessionWillPassivate(HttpSessionEvent se) 感知对象被钝化

八丶Servlet Request Listeners:

1.ServletRequestListener(监听创建销毁):

监听HttpServletRequest 对象的创建和销毁
方法:

requestInitialized(ServletRequestEvent sre) 监听request对象创建
requestDestroyed(ServletRequestEvent sre) 监听request对象销毁

2.ServletRequestAttributeListener(监听属性变更):

每种监听属性变更都有3个方法

attributeAdded 监听属性添加

​ 当数据范围对象没有该属性,第一次添加时调用执行 setAttribute(name,value);

attributeRemoved 监听属性移除

​ 从一个数据范围对象删除一个已经存在属性时执行 removeAttribute(name);

attributeReplaced 监听属性替换

​ 当一个数据范围已经存在一个属性,向数据范围添加相同名称的属性时,触发替换方法 — setAttribute(name,value);

九丶配置监听器

1.web.xml:

 <!--ServletContextListener监听器进行注册实例-->
<!--因为监听器执行不由用户访问,因此不用配置url路径--> 
	<listener>
		<!--listener-class中路径为:包路径.类名-->
   		  <listener-class>servlet.listener.MyServletContextListener</listener-class>
	</listener>

2.注释:

@WebListener
public class SessionListener implements HttpSessionListener{
	@Override
	public void sessionCreated(HttpSessionEvent se) {
		System.out.println("创建了session对象:"+se.getSession().getId());
	}
	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		System.out.println("销毁了session对象:"+se.getSession().getId());	
	}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值