博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
监听器
阅读量:6509 次
发布时间:2019-06-24

本文共 1714 字,大约阅读时间需要 5 分钟。

监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。

 

Java Web开发中的监听器(listener)就是application、session、request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件,如下所示:

 监听器可以用来检测网站的在线人数,统计网站的访问量等等

监听器组件

监听器涉及三个组件:事件源,事件对象,事件监听器

当事件源发生某个动作的时候,它会调用事件监听器的方法,并在调用事件监听器方法的时候把事件对象传递进去。

我们在监听器中就可以通过事件对象获取得到事件源,从而对事件源进行操作!

Servle监听器

在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别 ServletContext, HttpSession和ServletRequest这三个域对象

和其它事件监听器略有不同的是,servlet监听器的注册不是直接注册在事件源上,而是由WEB容器负责注册,开发人员只需在web.xml文件中使用<listener>标签配置好监听器

监听对象的创建和销毁

HttpSessionListener、ServletContextListener、ServletRequestListener分别监控着Session、Context、Request对象的创建和销毁

  • HttpSessionListener(可以用来收集在线者信息)

  • ServletContextListener(可以获取web.xml里面的参数配置)

  • ServletRequestListener

监听对象属性变化

ServletContextAttributeListener、HttpSessionAttributeListener、ServletRequestAttributeListener分别监听着Context、Session、Request对象属性的变化

这三个接口中都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件,同一个事件在这三个接口中对应的方法名称完全相同,只是接受的参数类型不同

  • attributeAdded()

  • attributeRemoved()

  • attributeReplaced()

监听Session内的对象

除了上面的6种Listener,还有两种Linstener监听Session内的对象,分别是HttpSessionBindingListener和HttpSessionActivationListener,实现这两个接口并不需要在web.xml文件中注册

  • 实现HttpSessionBindingListener接口,**JavaBean 对象可以感知自己被绑定到 Session 中和从 Session 中删除的事件【和HttpSessionAttributeListener的作用是差不多的】 **  

  • 实现HttpSessionActivationListener接口,JavaBean 对象可以感知自己被活化和钝化的事件(当服务器关闭时,会将Session的内容保存在硬盘上【钝化】,当服务器开启时,会将Session的内容在硬盘式重新加载【活化】) 。。

想要测试出Session的硬化和钝化,需要修改Tomcat的配置的。在META-INF下的context.xml文件中添加下面的代码:

<Context>

  <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
  <Store className="org.apache.catalina.session.FileStore" directory="zhongfucheng"/>
  </Manager>
</Context>

 

转载于:https://www.cnblogs.com/hongchengshise/p/10386027.html

你可能感兴趣的文章
模块化
查看>>
利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统
查看>>
block和代理使用对比
查看>>
poj1279
查看>>
DSP投放进阶指南
查看>>
winform简单代码导出Execl
查看>>
Android EditText 多行,滚动条 等
查看>>
SPOJ 10628 COT - Count on a tree(在树上建立主席树)(LCA)
查看>>
general error c1010070: Failed to load and parse the manifest
查看>>
SpringInAction--Bean参数的自动注入
查看>>
svg的自述
查看>>
fragment的生命周期
查看>>
day-19 django2
查看>>
第二次作业
查看>>
Linux命令大全
查看>>
Socket的三个功能类TCPClient、TCPListener 和 UDPClient (转)
查看>>
Java:对象的强、软、弱和虚引用
查看>>
CSS一周学习总结
查看>>
java source 生成API
查看>>
设置selinux开机自动关闭
查看>>