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中时单实例多线程的,因此如果涉及到共享数据需要注意线程安全问题。及时加锁。

  • 相关阅读:
    ASP.NET MVC 3 Internationalization
    Windows 8学习笔记(十)Notification
    Windows 8学习笔记(十二)集合控件
    Windows 8学习笔记(七)Input输入设备
    【配置与安装】解决类似umount target is busy挂载盘卸载不掉问题
    【coredump】coredump 使用
    【C++调试】"./xxx: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./xxx)" 执行报错
    【配置与安装】CentOS7 多磁盘合成卷组并创建LVM,挂载到同一目录
    Unix 知识
    3D创作概念入门
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6661976.html
Copyright © 2011-2022 走看看