Servlet的生命周期据是面试的时候常问的问题,所以总结一下。
生命全过程:
加载 ClassLoader
实例化 new
初始化 init(ServletConfig)
处理请求 service doGet doPost
退出服务 destroy()
特别强调:
从头到尾只有一个对象,而且在客户端第一次访问Servlet的时候Tomcat new出一个对象。
init()//只执行一次, 第一次初始化的时候
处理请求是以多线程的方式处理的
destroy()//webapp 退出的时候
例子:
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestLifeCycleServlet extends HttpServlet {
public TestLifeCycleServlet() {
System.out.println("Constructor!");
}/构造函数new新对象的时候调用。,
@Override
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
System.out.println("doGet!");
}//响应服务的时候调用
@Override
public void destroy() {
System.out.println("destory!");
}// webapp 退出的时候和卸载的时候调用。