Servlet的生命周期及其方法
Life cycle of Servlet and its methods
我知道 Servlet 由 init
、service
和 destroy
方法组成。我也知道有 doPost
和 doGet
方法可用。问题是 service
方法如何与 doPost
和 doGet
方法相关联。在识别 request
之后,它们是从 service
方法中调用的吗?实现do
方法时是否省略了service
?我需要在这里做一些说明。
例如,在接收单个 POST
请求的 Servlet
的生命周期中,我会猜测顺序是:
init()
被执行
- 当
init()
完成时调用 service()
service()
识别request
并调用doPost()
方法
- 当
doPost()
和service()
都完成时destroy()
方法被执行
这样对吗?
不对,不对。
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.
这是基本流程,
- 通过调用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 生命周期
我知道 Servlet 由 init
、service
和 destroy
方法组成。我也知道有 doPost
和 doGet
方法可用。问题是 service
方法如何与 doPost
和 doGet
方法相关联。在识别 request
之后,它们是从 service
方法中调用的吗?实现do
方法时是否省略了service
?我需要在这里做一些说明。
例如,在接收单个 POST
请求的 Servlet
的生命周期中,我会猜测顺序是:
init()
被执行- 当
init()
完成时调用service()
service()
识别request
并调用doPost()
方法- 当
doPost()
和service()
都完成时destroy()
方法被执行
这样对吗?
不对,不对。
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.
这是基本流程, - 通过调用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 生命周期