Servlet对象的生命周期

Servlet对象由谁来维护

  1. Servlet对象的创建,对象上方法的调用,对象的销毁,都是由Tomcat服务器(WEB Container)全权负责的
  2. WEB容器来管理Servlet对象的死活

Servlet对象什么时候被创建

默认情况Tomcat服务器在启动的情况下,Servlet对象并不会被实例化,直至用户发送请求。这样做的原因是为了节省内存空间,如果提前将所有的Servlet对象都创建出来,内存资源将被大量占用。所以只需等用户发送请求,将响应的Servlet对象创建出来即可

用户自己创建的Servlet对象接收WEB容器的管理吗

  1. 我们自己new的对象是不受Web容器的管理的
  2. WEB容器创建的Servlet对象都会存放到一个HashMap集合当中,只有放到HashMap集合当中的Servlet对象才能被WEB Container管理
    自己new的Servlet对象不会被WEB容器管理。
  3. WEB容器底层有一个HashMap集合,存放Servlet对象和请求路径之间的关系。

怎样让服务器启动的时候创建Servlet对象

利用标签,后面的数字越大,优先级越低。

    <servlet>
        <servlet-name>aServlet</servlet-name>
        <servlet-class>com.kun.javaweb.AServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>

Servlet对象生命周期

  1. 默认情况下服务器启动的时候AServlet对象并没有被实例化
  2. 用户发送第一次请求的时候,控制台输出了以下内容
    AServlet无参构造方法执行了!
    AServlet’s init method execute!
    AServlet’s service method execute!
  3. 根据以上内容得出结论
    (1)用户在第一次发送请求的时候Servlet对象被实例化,
    (2)AServlet对象被创建出来后,Tomcat服务器立即调用了AServlet对象的init方法(init方法执行的时候,AServlet对象已经被创建出来)
    (3)用户发送第一次请求的时候,init方法执行完毕,Tomcat服务器立即调用AServlet对象的service方法
    (4)用户发送第二次请求,控制台输出了下面的内容
    AServlet’s service method execute!
    (5)由此可知,当用户发送第二次及更多请求的时候,Servlet对象并没有新建,还是使用之前创建好的Servlet对象方法。
    第一,Servlet对象是单实例的(但是Servlet类并不符合单例模式,我们称之为假单例。之所以单例是因为Servlet对象的创建
    JavaWeb程序员管不着,有Tomcat来管理。)
    第二,无参构造方法和init方法只在用户第一次发送请求的时候执行一次。
    第三,用户只要发送请求,service方法就执行一次
  4. 关闭服务器的时候,控制台输出了下面的内容
    AServlet’s destroy method execute
  5. 根据以上内容可以得出
    (1)Servlet对象的destroy方法只被Tomcat服务器关闭的时候调用一次。
    (2)服务器关闭的时候会销毁AServlet对象的内存
    (3)服务器在销毁AServlet对象之前,会调用AServlet对象的destroy方法
  6. destroy方法被调用的时候,Servlet对象还没有被销毁。destroy方法调用之后,内存才会被释放。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值