• servlet生命周期


    Servlet的生命周期分为5个阶段:加载、创建、初始化 init()、处理客户请求 service()、卸载 destroy()。


    1.加载:容器通过类加载器使用Servlet类对应的文件来加载Servlet。

    2.创建:通过调用Servlet的构造函数来创建一个Servlet实例。

    3.初始化:通过调用Servlet的init()方法来完成初始化工作,这个方法是在Servlet已经被创建,但在向客户端提供服务之前调用。

    4.处理客户请求:Servlet创建后就可以处理请求,当有新的客户端请求时,Web容器都会创建一个新的线程来处理该请求。接着调用Servlet的Service()方法来响应客户端请求(Service方法是根据请求的method属性来调用doGet()和doPost())。

    5.卸载:容器在卸载Servlet之前需要调用destroy()方法,让Servlet释放其占用的资源。

    1.servlet 的生命周期

    主要有三个方法:

    1. init() 初始化阶段
    2. service() 处理客户端请求阶段
    3. destroy() 终止阶段

    初始化阶段:

    Servlet 容器加载 Servlet,加载完成后,Servlet 容器会创建一个 Servlet 实例并调用 init() 方法,init() 方法只会调用一次
    Servlet 容器会在一下几种情况装载 Servlet:

    Servlet 容器启动时自动装载某些 servlet,实现这个需要在 web.xml 文件中添加 1
    在 Servlet 容器启动后,客户首次向 Servlet 发送请求
    Servlet 类文件被更新后,重新装载

    处理客户端请求阶段:

    每收到一个客户端请求,服务器就会产生一个新的线程去处理。
    对于用户的 Servlet 请求,Servlet 容器会创建一个特定于请求的 ServletRequest 和 ServletResponse。
    对于 tomcat 来说,它会将传递来的参数放入一个 HashTable 中,这是一个 String–>String[] 的键值映射

    终止阶段:
    当 web 应用被终止,或者 Servlet 容器终止运行,或者 Servlet 重新装载 Servlet 新实例时,Servlet 容器会调用 Servlet 的 destroy() 方法

    2.servlet 的工作原理

    客户发送一个请求,Servlet 调用 service() 方法对请求进行响应,service() 方法会对请求的方法进行匹配,进入相应的逻辑层,完成请求的响应。

    但是 Servlet 接口和 GenericServlet 接口中没有 doGet(),doPost() 等方法,HttpServlet 中定义了这些,但是返回的都是 Error 信息,所以每次定义 Servlet 都要重写这些方法。

    Sertvlet 和 GenericServlet 是不特定于任何协议的,而 HttpServlet 是特定于 Http 协议的,所以 HttpServlet 中的 service() 方法中将 ServletRequest,ServletResponse 强转为 HttpRequest 和 HttpResponse,最后调用自己的 service 方法去完成响应。

  • 相关阅读:
    高频单链表题
    Java基础之HashSet和TreeSet
    vxe-table
    EM算法
    软考-论文写作-论架构风格论文
    主线程和子线程的关系(讨论主线程结束,子线程是否要回收)
    如何在CSDN获得铁粉
    SpringSecurity框架【详解】
    番外 1 : Java 环境下的 selenium 搭建
    Redis常见数据类型及其常用命令详解
  • 原文地址:https://blog.csdn.net/agonie201218/article/details/137047318