servlet生命周期

package day09;

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;
/**
 * 本例是研究servlet的生命周期的栗子:
 * 
 * @author mzy
 *
 * 可以看出在我们的servlet只有在初次被访问的时候,才会调用构造方法
 * 初始化对象,然后调用init方法;但是这样会造成我们初次访问servlet
 * 的时候等待的时间过长!
 * 那么有没有什么办法,能让我们在tomcat启动之前就将servlet加载进服
 * 务器呢?
 * 在web.xml文件的配置中加一个声明:
 * 		
  <servlet>
    <servlet-name>LifeDemo</servlet-name>
    <servlet-class>day09.LifeDemo</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  
  <servlet-mapping>  
    <servlet-name>LifeDemo</servlet-name>
    <url-pattern>/servlet/LifeDemo</url-pattern>
  </servlet-mapping>
 * 
 * mapping:映射; 
 * pattern:模式;
 * 
 * 在加上load-on-startup之后,就相当于告诉tomcat这个
 * servlet需要在tomcat启动的时候,就加载到服务器中去
 * 其中所填的数字代表着这个servlet被加载的优先级;
 * 0为最高优先级,依次往后数,优先级越来越小。
 *
 *
 */
public class LifeDemo extends HttpServlet{
	/*
		servlet对象被创建了
		init方法被调用
		service方法被调用
		service方法被调用
		service方法被调用
		
		在web中一个servlet对象只会被创建一遍(说明是单例的)
		一次创建之后就多次服务,并且多个用户访问的话都说支持的(说明它还是多线程的)
		
		
		但我将这个项目进行重部署的时候(redeploy)或者停掉的时候:就显示servlet对象被销毁了
	 */
	private static final long serialVersionUID = -1079790774388224018L;
	
	/**
	 * 1) 构造方法:servlet对象被创建时被调用
	 */
	public LifeDemo() {
		System.out.println("servlet对象被创建了");
	}
	
	/**
	 * 2) 初始化方法
	 */
	@Override
	public void init(ServletConfig config) throws ServletException {
		System.out.println("init方法被调用");
	}
	
	/**
	 * 3) 服务方法
	 */
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("service方法被调用");
	}
	
	/**
	 * 4) 销毁方法:servlet对象被销毁时调用
	 */
	@Override
	public void destroy() {
		System.out.println("servlet对象被销毁了");
	}
}

原文地址:https://www.cnblogs.com/mzywucai/p/11053523.html