zoukankan      html  css  js  c++  java
  • 监听器

    1.监听器的术语

    事件源:指的是被监听的对象.(汽车)
    监听器:值的是监听的对象.(报警器)
    事件源与监听器的绑定:就是在汽车上安装报警器.
    事件:指的是事件源的改变.(踹汽车一脚)---主要的功能获得事件源对象.

    2.web中的监听器

    WEB中的Listener和Filter是属于Servlet规范中的高级的技术.
    WEB中的监听器共有三类八种(监听三个域对象)
    事件源:servlet中的三个域对象:ServletContext,HttpSession,ServletRequest
    监听器:自定义实现8个接口
    事件源和监听器的绑定:配置

    3.web中的监听器的分类

    三类八种:
    一类:监听三个域对象的创建和销毁的监听器
    *ServletContextListener
    *HttpSessionListtener
    *ServletRequestListener

    二类:监听三个域对象属性变更的监听器(属性添加,移除,替换)
    *ServletContextAttributeListener
    *HttpSessionAttributeListener
    *ServletRequestAttributeListener

    三类:监听HttpSession中的javabean的状态改变(绑定,解除绑定,钝化,活化)
    *HttpSessionBindingListener
    *HttpSessionActiveListener

    ServletContextListener:监听ServletContext对象的创建和销毁
    【ServletContext对象的创建和销毁】:
    * 创建:服务器启动的时候,服务器为每个WEB应用创建一个属于该web项目的对象ServletContext.
    * 销毁:服务器关闭或者项目从服务器中移除的时候.

    public class MyServletContextListener implements ServletContextListener{
    
        @Override
        public void contextInitialized(ServletContextEvent sce) {
            System.out.println("ServletContext对象被创建了...");
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent sce) {
            System.out.println("ServletContext对象被销毁了...");
        }
    
    }

    配置:

      <!-- 配置监听器 -->
      <listener>
          <listener-class>com.itheima.weblistener.MyServletContextListener</listener-class>
      </listener>

    HttpSessionListener:监听HttpSession的创建和销毁的监听器:
    【HttpSession何时创建和销毁的】
    * 创建:服务器端第一次调用getSession();
    * 销毁:
    * 非正常关闭服务器(正常关闭session会序列化):
    * session过期了默认30分钟.
    * 手动调用session.invalidate();

    【HttpSession的问题】
    * 访问Servlet会不会创建Session : 不会
    * 访问JSP会不会创建Session :会.
    * 访问html会不会创建Session :不会

    public class MyHttpSessionListener implements HttpSessionListener{
    
        @Override
        public void sessionCreated(HttpSessionEvent se) {
            System.out.println("HttpSession被创建了...");
        }
    
        @Override
        public void sessionDestroyed(HttpSessionEvent se) {
            System.out.println("HttpSession被销毁了...");
        }
    
    }

    配置:

      <listener>
        <listener-class>com.itheima.weblistener.MyHttpSessionListener</listener-class>
      </listener>


    ServletRequestListener:监听ServletRequest对象的创建和销毁的监听器:

    【request对象何时创建和销毁】:
    * 创建:客户端向服务器发送一次请求,服务器就会创建request对象.
    * 销毁:服务器对这次请求作出响应后就会销毁request对象.

    【问题】:
    访问一个Servlet会不会创建request对象:会
    访问一个JSP会不会创建request对象:会
    访问一个HTML会不会创建request对象:会

    public class MyServletRequestListener implements ServletRequestListener{
    
        @Override
        public void requestDestroyed(ServletRequestEvent sre) {
            System.out.println("ServletRequest被销毁了...");
        }
    
        @Override
        public void requestInitialized(ServletRequestEvent sre) {
            System.out.println("ServletRequest被创建了...");
        }
    
    }

    配置:

      <listener>
        <listener-class>com.itheima.weblistener.MyServletRequestListener</listener-class>
      </listener>
  • 相关阅读:
    BZOJ1588 营业额统计 (Splay)
    HNOI2004 郁闷的出纳员(Splay)
    (寒假集训) Piggyback(最短路)
    (寒假集训) 卡片(离散化)
    (寒假集训) Cow Jog(二分优化的最长上升子数列)
    Docker安装
    Spring-Batch将CSV文件转为XML文件
    SSH管理多密钥
    CentOS7防火墙firewalld的配置
    CentOS下安装与配置Maven
  • 原文地址:https://www.cnblogs.com/learnjfm/p/6947541.html
Copyright © 2011-2022 走看看