代码之家  ›  专栏  ›  技术社区  ›  Rakim Brigham

Servlet的生命周期及其方法

  •  3
  • Rakim Brigham  · 技术社区  · 10 年前

    我知道Servlet由 init , service destroy 方法。我也知道有 doPost doGet 方法可用。问题是 服务 方法与 doPost公司 doGet(获取) 方法。他们是从 服务 方法之后 request 是否被识别?是 服务 do 实施方法?我需要一些澄清。

    例如,在 Servlet 接收单个 POST 请求,我会猜到订单是:

    • init() 已执行
    • 什么时候 初始化() 已完成 service() 被称为
    • 服务() 识别 要求 并调用 doPost() 方法
    • 当两者都 doPost() 服务() 完成 destroy() 方法被执行

    这样对吗?

    3 回复  |  直到 10 年前
        1
  •  2
  •   JB Nizet    10 年前

    不,这不对。

    init() destroy() 只调用一次。servlet由容器实例化 初始化() 方法。这通常发生在启动时,或者当第一个servlet请求出现时。

    然后 全部的 请求由 service() 方法,该方法调用适当的 doXxx() 基于请求类型的方法( as documented ).

    然后,当应用程序取消部署(或服务器停止)时 毁灭() 方法。

    javadoc是你的朋友。读它。它包含了您问题的所有答案。这些规格也可以免费获得。

        2
  •  2
  •   Arnaud    10 年前

    从文献中, service 负责根据 超文本传输协议 方法已调用( 岗位 , 得到 ...)

    从公共服务方法接收标准HTTP请求 将它们分派给该类中定义的doXXX方法。这 方法是HTTP特定版本的 Servlet.service(javax.Servlet.ServletRequest, javax.servlet。ServletResponse)方法。没有必要重写 这种方法。

    HTTPServlet.service

        3
  •  2
  •   Narendra Jaggi    10 年前

    这是基本流程, -通过调用init()方法初始化servlet。

    • servlet调用service()方法来处理客户端的请求。
    • 服务方法根据请求调用doGet或doPost 如果get请求到来,则类型来自客户端doGet在以下情况下被调用 后请求doPost被调用

    • 通过调用destroy()方法终止servlet。

    • 最后,servlet由 JVM。

    这个 service()方法 是执行实际任务的主要方法。servlet容器(即web服务器)调用service()方法来处理来自客户端(浏览器)的请求,并将格式化的响应写回客户端。

    每次服务器接收到对servlet的请求时,服务器都会生成一个新线程并调用服务。service()方法检查HTTP请求类型(GET、POST、PUT、DELETE等),并根据需要调用doGet、doPost、doPut、doDelete等方法。

    Servlet生命周期 enter image description here