Servlet的生命周期及其方法

Life cycle of Servlet and its methods

我知道 Servlet 由 initservicedestroy 方法组成。我也知道有 doPostdoGet 方法可用。问题是 service 方法如何与 doPostdoGet 方法相关联。在识别 request 之后,它们是从 service 方法中调用的吗?实现do方法时是否省略了service?我需要在这里做一些说明。

例如,在接收单个 POST 请求的 Servlet 的生命周期中,我会猜测顺序是:

这样对吗?

不对,不对。

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

然后所有请求由service()方法处理,该方法根据请求类型调用适当的doXxx()方法(as documented).

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

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

从文档上看,service负责调度到相关的servlet方法,基于调用的HTTP方法(POST, GET...)

Receives standard HTTP requests from the public service method and dispatches them to the doXXX methods defined in this class. This method is an HTTP-specific version of the Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse) method. There's no need to override this method.

HTTPServlet.service

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

  • servlet 调用 service() 方法来处理客户端的请求。
  • 服务方法根据请求调用doGet或doPost 类型来自客户端,如果 get 请求来了 doGet 被调用,如果 post请求doPost被调用

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

  • 最后,servlet被垃圾回收器垃圾回收了 JVM.

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

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

Servlet 生命周期