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方法。方法执行在服务器销毁之前,一般用于释放资源。

posted @ 2020-04-06 14:32  张瑞丰  阅读(237)  评论(0编辑  收藏  举报