servlet 声明周期可以分四个阶段:
如下图所示:

实例:
接着上节的案例,我们重写init、service、destroy方法,观察servlet的生命周期如何演变。
package com.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(value="/hello")
public class HelloServlet extends HttpServlet {
public HelloServlet(){
System.out.println("执行了构造方法...");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("执行了service()...");
super.service(req, resp);
}
@Override
public void destroy() {
System.out.println("执行了destroy()...");
super.destroy();
}
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("执行了init(config)方法...");
super.init(config);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("执行了doGet...");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("执行了doPost...");
}
}

当点击超链接,发送get请求后,控制台输出:
执行了构造方法...
执行了init(config)方法...
执行了service()...
执行了doGet...
当点击提交按钮,发送post请求后,控制台输出:
执行了service()...
执行了doPost...
当关闭tomcat服务器后,控制台输出:
执行了destroy()...
小结
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: