zoukankan      html  css  js  c++  java
  • 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对象被销毁了");
    	}
    }
    

  • 相关阅读:
    java并发编程的艺术笔记-第二章
    java并发编程的艺术笔记-第一章
    Class字节码的加载
    Maven学习笔记(1)
    深入分析java web技术内幕读书笔记-第一章
    VMware虚拟机扩展内存和磁盘
    【避坑】for循环删除列表元素的注意事项--remove函数逆序删除
    虚拟机无法上网问题解决
    jmeter变量跨线程组使用--设置全局变量
    常见慢查询原因
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053523.html
Copyright © 2011-2022 走看看