监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext、HttpSession、ServletRequest等域对象的创建与销毁事件和监听域对象的属性发生修改的事件,可以在发生前和发生后做一些必要的处理。简单来说就是用来监听一个特定的事件是否发生改变。

监听器按照监听的对象划分为3种:

用于监听应用程序环境(ServletContext)对象的事件监听器。

用于监听用户会话对象(HttpSession)的事件监听器。

用于监听请求消息对象(ServletRequest)的事件监听器。

按照监听的事件划分

1.监听域对象自身的创建和销毁的事件监听器。

2.创建域对象中的属性的增加和删除的事件监听器。

被监听对象及其对应的监听器如下所示:

ServletContext是一个全局的储存信息的空间,其监听器从服务器启动调用contextInitialized方法到服务器停止contextDestoryed方法,对于一个web项目,ServletContext对象只能有一个,而ServletContextListener却可以有多个。ServletContext主要用于定时器和全局属性对象。

HttpSession监听器在一次会话发生时被调用sessionCreated方法会话结束时调用sessionDestoryed方法。在一个web项目中可以有多个HttpSession对象,1个HttpSession可以注册多个HttpSessionListener。HttpSession常用于记录访问人数和访问日志。

ServletRequest监听器在客户端请求事件发生时被调用requestInitialized方法事件完成时requestDestoryed方法。一个ServletRequest同样可以注册多个ServletRequestListener,ServletRequest常用于读取参数和记录访问历史。

3.监听绑定到HttpSession域中的某个对象的状态的事件监听器

HttpSessionBindingListener监听器:(不需要web.xml配置)valueBound方法绑定session对象,valueUnbound方法解绑session对象。所谓绑定就是调用session.setAttribute()方法将实现HttpSessionBindingListener接口的对象添加到session中。

HttpSessionListener只需要设置到web.xml中就可以监听整个应用中的所有session。HttpSessionBindingListener必须实例化后放入某一个session中,才可以进行监听。

HttpSessionActivationListener监听器:(不需要web.xml配置)sessionWillPassivate方法钝化,sessionDidActivate方法活化,实现此接口的JavaBean,可以感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)的过程。如果需要同时保存Session中的JavaBean则JavaBean也要实现Serializable序列化接口。实现此接口的JavaBean与HttpSessionBindingListener一样,不必配置到web.xml中。

 

 

 

posted on 2017-10-03 19:29  逝风无言  阅读(3910)  评论(0编辑  收藏  举报