zoukankan      html  css  js  c++  java
  • Java中的监听器

     1、概念

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

    2、原理

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

     

    3、八种监听器 

    ServletContextEvent对Servlet上下文进行监听 

     

    监听器

    监听事件

    相关方法

    ServletContextListener

    ServletContextEvent

    contextDestroyed(ServletContextEvent sce)

     ServletContext对象销毁时触发

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

    contextInitialized(ServletContextEvent sce)

    ServletContext对象创建时触发

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

    ServletContextAttributeListene

    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对象将要变成无效状态的时触发

     

  • 相关阅读:
    分段和分页内存管理
    从文件/文件流的头字节中得到mime信息
    selenium中WebElement.getText()为空解决方法
    29个酷炫的Firefox配置参数
    web automation 常用技术比较
    误判心理学
    区块链+金融,带你直击实践应用中的需求和痛点
    供应链金融平台
    供应链金融的三种模式和四大趋势
    中国的支付清算体系是怎么玩的?
  • 原文地址:https://www.cnblogs.com/zs234/p/3042912.html
Copyright © 2011-2022 走看看