Servlet 的生命周期

1、生命周期

servlet是一个单实例  多线程的程序

       servlet的生命周期

       1】类加载

        "com.bjsxt.servlet.LifeServlet"

         Class  clazz=  Class.forName("com.bjsxt.servlet.LifeServlet");

        2】实例化 (离不开反射)

        Object  obj=  clazz.newInstance();

        3】 初始化(离不开反射)

        4】服务请求(service)(离不开反射)

        5】 销毁操作(离不开反射)

2类加载的时机

       1】默认的情况是第一次访问servlet的时候进行类加载     

       2】<load-on-startup>0</load-on-startup>(当启动服务器时候加载) 数字越小加载的时机越往前

3、代码实现

 //实例化方法   执行一次

 public  LifeServlet(){

 

 System.out.println("LifeServlet.LifeServlet()");

 }

  //请求服务---每一次请求都会执行

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

System.out.println("LifeServlet.doGet()");

}

    //请求服务---每一次请求都会执行

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

System.out.println("LifeServlet.doPost()");

}

//判断调用doget还是dopost--执行多次

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//获得传递的方法名成---GET/POST

String method = req.getMethod();

System.out.println(method);

if("GET".equals(method)){

doGet(req, resp);

}else if("POST".equals(method)){

doPost(req, resp);

}else {

System.out.println("执行其他的方法");

}

}

   //销毁操作  关闭服务器执行一次

@Override

public void destroy() {

System.out.println("LifeServlet.destroy()");

}

    

//初始化方法 ----执行一次

@Override

public void init() throws ServletException {

System.out.println("LifeServlet.init()");

}

 

}

原文地址:https://www.cnblogs.com/vincentmax/p/14277498.html