• 测试Servlet生命周期例子程序


    写一个类TestLifeCycleServlet,生成构造器TestLifeCycleServlet();重写HttpServlet的doGet();重写GenericServlet的destroy();  init();  故意打乱顺序,看后台打印结果,看他们的执行顺序。

     1 package servlet_01;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.ServletConfig;
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 public class TestLifeCycleServlet extends HttpServlet{
    12     
    13 
    14     public void destroy() {
    15         System.out.println("destroy");
    16     }
    17 
    18 
    19     public void init(ServletConfig config) throws ServletException {  //ServletConfig保存的是servlet的配置信息(web.xml里的)
    20         System.out.println("init");
    21     }
    22 
    23 
    24     public TestLifeCycleServlet() {
    25         System.out.println("construstor");
    26     }
    27     
    28 
    29     protected void doGet(HttpServletRequest request, HttpServletResponse response)
    30             throws ServletException, IOException {
    31         System.out.println("doGet");
    32     }
    33 
    34     
    35 }

    部署到tomcat,访问,然后刷新再访问一次。

    可以看到,先调用构造器,构建出对象,然后是init();-->doGet();-->doGet();暂时还没调destroy();两个doGet();说明不管你访问多少次,只构建了一个对象,为你提供服务。J2EE的要求,Servlet就new一个,(省内存)。(有个SingleThreadModel接口,已经废弃了。如果你的Servlet实现了这个接口,每当一个请求过来,就new一个新对象。)在同一个server,同一个container里头,只有一个servlet。init只执行一次,第一次初始化的时候。当webapps退出的时候,调用destroy();

    总结:

    servlet生命周期

    生命全过程:

    1  加载:ClassLoader把你的class load进来。

    2 实例化:new自己一个对象

    3 初始化:调用init(ServletConfig)方法,(一般重写这个带参的,就调用这个)

    4 处理请求:不断地处理请求,一般是对外的service  (对于HttpServlet来说就是doGet或者doPost)

    5 退出服务:调用destroy();

    **只有一个对象对外提供服务,再次访问的时候不会new重新的,不会调用init方法,不会的。

  • 相关阅读:
    meego API
    linux的文件cache导致写文件消耗大量内存
    系统内存不断消耗 导致系统停滞(表面像死机) 但又找不到内存泄漏点
    C常用的LinuxC语言函数库
    GUI
    java 集合类结构图
    接口到底是个什么玩意
    抽象类到底是个什么玩意
    异常
    IO流
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/4550938.html
Copyright © 2020-2023  润新知