Servlet的生命周期及其方法

时间:2016-01-01 12:51:56

标签: java servlets lifecycle

我知道Servlet由initservicedestroy方法组成。我也知道有doPostdoGet方法可用。问题是service方法与doPostdoGet方法的关系。在service被识别后,是否在request方法中调用它们?实施service方法时是否省略do?我需要一些澄清。

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

    执行
  • init()
  • init()完成后,service()被称为
  • service()标识request并调用doPost()方法
  • doPost()service()完成destroy()方法时

这是对的吗?

3 个答案:

答案 0 :(得分:2)

不,这不对。

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

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

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

javadoc是你的朋友。阅读。它包含您问题的所有答案。规格也是免费提供的。

答案 1 :(得分:2)

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

  • servlet调用service()方法来处理客户端的请求。
  • 服务方法根据请求调用doGet或doPost 类型来自客户端如果获取请求,则调用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

答案 2 :(得分:1)

从文档中,service负责根据调用的 HTTP 方法调派相关的servlet方法( POST GET < / EM> ...)

  

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

HTTPServlet.service