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>
  • 相关阅读:
    idea报错:error java compilation failed internal java compiler error
    idea怎么设置自己的名字和时间
    linux安装mvn后提示权限不够
    【转】java.util.Arrays.asList 的用法
    String... 用法
    zk 起别名时候碰到的问题
    集群配置 出现 “没有到主机的路由”
    修改linux的hosts 后提示“无效的参数”
    概念理解系列-------------贴近生活的奇葩解释模式
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'supplierAction': Injection of resource dependencies failed; nested exception is org.springframework.beans.factor
  • 原文地址:https://www.cnblogs.com/learnjfm/p/6947541.html
Copyright © 2011-2022 走看看