下午好。
为什么一个 HTTPservlet 的生命周期可以由一个 WEB 容器来管理?
WEB 服务器(例如 Apache Tomcat)能够捕获来自客户端的 HTTP 请求,以处理和回复 HTTP 响应;servlet 需要一个 web 容器(例如 Apache Tomcat),因为它没有 main,所以我们可以将 servlet 引擎视为初始化 servlet(简而言之)的“main”。
好的!现在我不明白为什么这件事是可能的。当客户端发送 HTTP 请求时,如果这是该 servlet 的第一次调用,Web 容器将调用 init()。然后,它允许调用 doGet、doPost(和其他方法)。最后,servlet 被销毁[destroy()]。但是 Web 容器是如何做到这一点的呢?servlet 引擎内部发生了什么?
****************************************EDIT*******************************************
我的问题是关于 servlet 引擎可以管理 servlet 周期的原因。答案真的很简单。servlet 引擎可以管理 servlet 的循环(因此它可以自动调用 create()、service() 和 destroy() 方法),因为 servlet 有一个公共接口javax.Servlet.servlet。该接口声明了具有语义、准确含义的方法:
create() is used just to create servlet
service() is used to handle HTTP methods
destroy() is used to delete the servlet
程序员可以重写这些方法,但他们必须尊重方法的语义。