zoukankan      html  css  js  c++  java
  • servlet生命周期

    1 servlet生命周期中的4个重要方法

    1)构造方法:创建servlet对象,默认情况下,第一次访问servlet的时候创建servlet对象,只调用一次。servlet对象是单实例的。

    2)init方法:创建完servlet对象后调用,只调用一次。

    3)service方法:每次发出请求时调用一次。

    4)destroy方法:销毁servlet对象时候调用。停止tomcat服务器时调用。

    2 Tomtcat内部代码运行:

                 1)通过映射找到到servlet-class的内容,字符串

                2)通过反射构造Servlet对象

                      2.1 得到字节码对象

                      Class clazz = class.forName("Servlet");

                      2.2 调用无参数的构造方法来构造对象

                      Object obj = clazz.newInstance();     ---1.servlet的构造方法被调用

               3)创建ServletConfig对象,通过反射调用init方法

                      3.1 得到方法对象

                      Method m = clazz.getDeclareMethod("init",ServletConfig.class);

                      3.2 调用方法

                      m.invoke(obj,config);             --2.servlet的init方法被调用

               4)创建request,response对象,通过反射调用service方法

                      4.1 得到方法对象

                      Methodm m =clazz.getDeclareMethod("service",HttpServletRequest.class,HttpServletResponse.class);

                      4.2 调用方法

                      m.invoke(obj,request,response);  --3.servlet的service方法被调用

               5)当tomcat服务器停止或web应用重新部署,通过反射调用destroy方法

                      5.1 得到方法对象

                      Method m = clazz.getDeclareMethod("destroy",null);

                      5.2 调用方法

                      m.invoke(obj,null);            --4.servlet的destroy方法被调用

    3 servlet再tomcat中时单实例多线程的,因此如果涉及到共享数据需要注意线程安全问题。及时加锁。

  • 相关阅读:
    mysql安装停在make[3]: Leaving directory `/mysql5.xx/mysqltest' 解决方法
    搞了个burst
    PKU2074
    PKU2029
    ACM/ICPC要求的知识点(转)
    PKU3264线段树解法
    PKU2036
    PKU1151线段树解法
    今天递了辞呈
    hamachi
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6661976.html
Copyright © 2011-2022 走看看