Servlet的生命周期

Posted zhangruifeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet的生命周期相关的知识,希望对你有一定的参考价值。

1、被创建: 

  特点:执行init方法,只执行一次,一般用于加载资源。

  启动时机:如何配置其启动时机呢,可以在web.xml中修改

    <!--配置Servlet-->
    <servlet>
        <servlet-name>demo</servlet-name>
        <servlet-class>cn.rayfoo.web.HelloServlet</servlet-class>
    <!-- 配置启动时机,值为负数第一次被访问时创建  值为正数或0在服务器启动时创建 -->
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo</servlet-name>
        <url-pattern>/demo</url-pattern>
    </servlet-mapping>

  问题:init只执行一次,说明Servlet在内存中只存在一个对象,说明Servlet时单例的。所以Servlet存在线程安全问题,但是加锁又太影响效率

  解决方案:尽量不要在Servlet中定义成员变量,即时定义了也不要修改。

2、提供服务:

  执行service方法,执行多次

  特点:每次访问Servlet时,service方法都会被调用一次。

3、被销毁

  执行destory方法,只执行一次

  特点:只有服务器正常关闭时,才会执行destory方法。方法执行在服务器销毁之前,一般用于释放资源。

以上是关于Servlet的生命周期的主要内容,如果未能解决你的问题,请参考以下文章

Servlet的生命周期

关于片段生命周期

servlet和filter的区别

调用 replace() 时片段的生命周期是啥?

在不存在的片段上调用片段生命周期和 onCreate 的问题

Android片段生命周期:onResume调用了两次