Servlet 生命周期
Servlet 的生命周期由 Servlet 容器管理。生命周期可以概括为 5 个阶段:- Load Servlet 类
- 创建 Servlet 实例
- Call 方法 init()
- 调用方法 service()
- 调用方法 destroy()
步骤 4 每次执行多次 请求 HTTP.
步骤 5 在 servlet 容器销毁 servlet 时执行。
这是一种表示 servlet 生命周期的算法:
步骤在下面详细解释:
加载 Servlet 类
首先,对于要调用的 servlet, Servlet 容器必须装入 Servlet 类。这与任何其他类一样。Create Servlet instance
现在,该类已加载,容器将创建一个新的 servlet 实例。通常,只创建一个实例,并且请求 在同一个 servlet 实例中处理。它位于servlet 容器来决定,但一般来说,只有一个实例。调用 init()
方法 init() 被设计为只调用一次。创建实例时,init()。.它允许 servlet 在处理第一个请求之前进行初始化。您可以在 web.xml.init() 方法中指定 servlet 初始化参数,如下所示:
public void init() throws ServletException {
// 初始化...
}
Call service()
对于收到的每个请求,服务器都会创建一个新线程并执行 methodservice()。方法 service()检查HTTP请求的类型(GET、POST、PUT、DELETE等),并调用相应的doGet、doPost、doPut、doDelete等方法。只要 servlet 保持活动状态,方法 service() 可以再次调用。因此,此步骤可能是 servlet 生命周期中最长的步骤,因为它运行多次。这是此方法的声明:
public void service(ServletRequest request,方法 doGet() 和 doPost() 每次到达时都会经常使用。请求。这是声明
ServletResponse response)
抛出 ServletException, IOException{
}
doGet()
GET 请求是在未定义方法的 URL 或 HTML 表单中创建的,必须由 doGet() 处理。public void doGet(HttpServletRequest request,
HttpServletResponse response)
抛出 ServletException, IOException {
// 代码
}
doPost()
La 方法查询 POST 以 HTML 格式创建,应通过 doPost().
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}
调用 destroy()
方法destroy() 仅在 Servlet 生命周期结束时调用一次。此方法允许您关闭连接、停止线程、保存 cookie 列表.After destory(),则销毁 servlet 对象。方法 destory() 看起来像这样:
public void destroy() {
// 定稿代码...
}