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

  • 相关阅读:
    移动端网页使用flexible.js加入百度联盟广告样式不一致问题解决
    flexible.js移动端适配安卓高分辨不兼容问题
    vue select二级城市联动及第二级默认选中第一个option值
    设置滚动条样式
    windows mongodb最常用命令简单归纳
    vue用阿里云oss上传图片使用分片上传只能上传100kb以内的解决办法
    vue实现文章内容过长点击阅读全文功能
    vue获取dom元素注意问题
    input框取消光标颜色手机端不生效
    基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6661976.html
Copyright © 2011-2022 走看看