Java中的监听器

来源:互联网 发布:信息监理前景知乎 编辑:程序博客网 时间:2024/05/16 00:44

1、概念

         Servlet中的listener的作用是通过监听一些事件的发生,listener在事件发生前后可以做一些必要的处理。

 

2、原理

         简单理解就是事件源生成事件并将其发送至一个或多个监听器,监听器简单地等待,直到它收到一个事件。一旦事件被接受,监听器将处理这些事件并进行一些处理。listner监听的主要事件抽象的理解包括三种:ServletContextEvent、ServletRequestEvent、 HttpSessionEvent。


 

3、八种监听器

 

ServletContextEvent对Servlet上下文进行监听

 

监听器

监听事件

相关方法

ServletContextListener

ServletContextEvent

contextDestroyed(ServletContextEvent sce) 

ServletContext对象销毁时触发

(容器销毁时销毁ServletContext对象)

contextInitialized(ServletContextEvent sce)

 ServletContext对象创建时触发

(容器加载时创建ServletContext对象)

ServletContextAttributeListener

ServletContextAttributeEvent (继承

ServletContextEvent)

attributeAdded(ServletContextAttributeEvent event)

ServletContext对象添加属性时触发

request.getSession().getServletContext().setAttribute("person1","Jim");

attributeRemoved(ServletContextAttributeEvent event)

ServletContext对象移除属性时触发

request.getSession().getServletContext().removeAttribute("person1");

attributeReplaced(ServletContextAttributeEvent event)

ServletContext对象重新设定属性值时触发

request.getSession().getServletContext().setAttribute("person1","Green");

request.getSession().getServletContext().setAttribute("person1","Green1");

 

ServletRequestEvent对客户端请求进行监听

 

监听器

针对事件

相关方法

ServletRequest

ListenerServletRequestEvent

requestInitialized(ServletRequestEvent sre) 客户端请求发出时触发

requestDestroyed(ServletRequestEvent sre) 客户端请求结束时触发

 

ServletRequestAttributeListener

ServletRequestAttributeEvent (继承

ServletRequestEvent)

attributeAdded(ServletRequestAttributeEvent srae)

客户端请求对象添加属性时触发(

request.setAttribute("person1","Jim");

attributeRemoved(ServletRequestAttributeEvent srae)

客户端请求对象移除属性时触发(

request.removeAttribute("person1");

attributeReplaced(ServletRequestAttributeEvent srae)

客户端请求对象重新设定属性值时触发(

request.setAttribute("person1","Green");

request.setAttribute("person1","Green1");

 

ServletRequestEvent对Http会话监听

 

监听器

监听事件

相关方法

HttpSessionListener

HttpSessionEvent

sessionCreated(HttpSessionEvent se) session对象创建时发生,即浏览器页面打开时

sessionDestroyed(HttpSessionEvent se) session对象销毁时触发,即浏览器关闭或session过期

 

HttpSessionAttributeListener

HttpSessionBindingEvent (继承

HttpSessionEvent)

attributeAdded(HttpSessionBindingEvent event)

session对象添加属性时触发(

session.setAttribute("person1","Jim");

attributeRemoved(HttpSessionBindingEvent event)

客户端请求对象移除属性时触发(

session.removeAttribute("person1");

attributeReplaced(HttpSessionBindingEvent event)

session对象重新设定属性值时触发(

session.setAttribute("person1","Green");

session.setAttribute("person1","Green1");

HttpSessionBindingListener(

这个listener是一个比较特殊的listener,它不需要在web.xml中进行配置。

此listener需要存放于session中的对象实现此接口,才能被响应。

HttpSessionBindingEvent (继承

HttpSessionEvent)

valueBound(HttpSessionBindingEvent event) 此方法通过HttpSession的void setAttribute(String name, Object object)被调用。其中object需要实现HttpSessionBindingListener接口。

valueUnbound(HttpSessionBindingEvent event) 此方法通过HttpSession的void removeAttribute(String name)或者HttpSession失效时被调用。其中nam对应的object需要实现HttpSessionBindingListener接口。

HttpSessionActivationListener (

这个接口一般和Servlet容器的集群有关系,它监听的是同一个session转移至不同的JVM的事件。)

HttpSessionEvent

sessionDidActivate(HttpSessionEvent se) session对象已经变成有效的状态的时触发

sessionWillPassivate(HttpSessionEvent se) session对象将要变成无效状态的时触发

 

 

 

 

原创粉丝点击