• Listener、Filter、Servlet的创建及初始化顺序


      

    一、创建顺序

      1、web.xml文件中的加载顺序为:listener-filter-servlet

      2、如果web.xml中配置了<context-param>,初始化顺序:

          context-param > Listener > Filter > Servlet

    二、三大Web组件的生命周期

      1、Listener:

          Listener生命周期:一直从程序启动到程序停止运行。

        1.ServletContextListener:程序启动调用Listener的contextInitialized()方法,程序停止调用Listener的contextDestroyed()方法

        2.ServletRequestListener:每次访问一个Request资源前,都会执行requestInitialized()方法,方法访问完毕,都会执行requestDestroyed()方法。

        3.HttpSessionListener:每次调用request.getSession(),都会执行sessionCreated()方法,执行session.invalidate()方法,都会执行sessionDestroyed()方法。

        4.ServletRequestAttributeListener:每次调用request.setAttribute()都会执行attributeAdded()方法,

                         如果set的key在request里面存在,就会执行attributeReplacerd()方法,

                         调用request.removeAttribute()方法,都会执行attributeRemoved()方法。
      2、Filter

        程序启动调用Filter的init()方法(永远只调用一次),程序停止调用Filter的destroy()方法(永远只调用一次),

        doFilter()方法每次的访问请求如果符合拦截条件都会调用

        程序第一次运行,会在servlet调用init()方法以后调用,不管第几次调用,都在调用doGet(),doPost()方法之前。

      3、Servlet
        程序第一次访问,会调用servlet的init()方法初始化(只执行一次),每次程序执行都会根据请求调用doGet()或者doPost()方法,程序停止调用destory()方法。

    三、ServletContextListener监听器的创建与销毁

      1、contextInitialized(ServletContextEvent sce):当Servlet容器启动Web应用时调用该方法。

          在调用完该方法之后,容器再对Filter初始化,并且对那些在Web应用启动时就需要被初始化的Servlet进行加载

      2、contextDestroyed(ServletContextEvent sce):当Servlet容器终止Web应用时调用该方法。

          在调用该方法之前,容器会先销毁所有的Servlet和Filter过滤器。

    四、一次请求的初始化顺序

      filter初始化(程序启动时)——requestListener初始化(请求资源前)——servlet初始化(第一次访问该servlet)——执行doFilter()( 过滤)——

          销毁requestListener(响应完成)——销毁servlet(程序关闭)——销毁filter(程序关闭)     

    五、实体类实现序列化接口的意义

        将实体类对象以二进制形式保存到磁盘上,便于对象在网络中的传输,当再次加载到内存中,还能转换成完整的对象

        想要将实体类对象钝化到磁盘上,对应的实体类必须实现序列化接口

    转载于:https://www.cnblogs.com/java-zmj/p/7922364.html

  • 相关阅读:
    【1】BIO与NIO、AIO的区别
    BIO | NIO | AIO (Java版)
    Java NIO 机制分析(一) Java IO的演进
    AbstractQueuedSynchronizer同步队列与Condition等待队列协同机制
    【1】【JUC】Condition和生产者消费者模型
    【JUC】JDK1.8源码分析之CyclicBarrier
    常用排序,查找,树算法集锦
    AFNetworking
    ios推送服务,php服务端
    如何使用subversion管理iOS源代码
  • 原文地址:https://www.cnblogs.com/twodog/p/12138076.html
Copyright © 2020-2023  润新知