zoukankan      html  css  js  c++  java
  • 执行过程 —— WEB容器启动、执行到销毁全过程总结

    Step 1 —— 读取配置信息

    启动WEB项目时,容器(如Tomcat)会去读配置文件(web.xml)中的<listener/><context-param/>两个标签;

    Step 2 —— 创建监听类

    由容器创建<listener/>监听类实例,用于监听ServletContext、HttpSession的生命周期及属性变更;

    Step 3 —— 创建上下文

    由容器创建ServletContext(上下文)实例, 这时监听类实例会调用其contextInitialized(ServletContextEvent args)方法,并传入原先读取的<context-param/>键值对。在该方法中可以读取、操作ServletContext键值对(注意:这时WEB项目未完全启动完成,修改键值对等动作会比所有的Servlet都要早)

    ServletContext = ServletContextEvent.getServletContext();  

    Value = ServletContext.getInitParameter(Key);

    Step 4 —— 创建Servlet

    容器调用继承HttpServlet接口的类的构造方法创建Servlet

    Step 5 —— 创建ServletConfig

    容器创建ServletConfig对象(其中包含Servlet的初始化配置信息),并将ServletConfig对象与ServletContext对象关联。

    Step 6 —— 初始化Servlet

    容器调用Servlet对象的初始化init(ServletConfig config)方法,并传入ServletConfig参数初始化Servlet。

    Step 7 —— 接受请求

    当容器接到Servlet请求时,容器会创建ServletRequest和ServletResponse对象,然后调用service(HttpServletRequest,HttpServletResponse)方法,并传入参数。

    Step 8 —— 响应请求

    service()方法通过ServletRequest对象获得请求信息,并处理该请求,再通过ServletResponse对象生成响应结果。

    注:当Servlet容器把Servlet生成的响应结果发送给客户后,servlet容器会销毁ServletRequest和SevletResponse对象。

    Step 9 —— 销毁Servlet

    当Web应用被终止时,Servlet容器会先调用Web应用中所有的Servlet对象的destroy()方法,然后在销毁Servlet对象。此外容器还会销毁与Servlet对象关联的ServletConfig对象。在destroy()方法的实现中,可以释放servlet所占用的资源。如关闭文件输入输出流,关闭与数据库的连接。

  • 相关阅读:
    springboot springcloud zuul 过滤器
    springboot springcloud eureka 熔断器
    javaweb servlet filter
    maven nexus 搭建私服(二)
    springboot springcloud zuul 网关入门
    springboot springcloud 配置中心
    springboot springcloud eureka 入门
    java rabbitmq
    java jvm调优
    maven nexus 搭建私服(一)
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/9217461.html
Copyright © 2011-2022 走看看