Java第四十二天,Servlet系列(二),Servlet 的生命周期

一、Servlet 方法详解

  • init(ServletConfig servletConfig) ===> 初始化方法,在 Servlet 被创建时执行,只会执行一次
  • service(ServletRequest servletRequest, ServletResponse servletResponse) ===> 提供服务的方法;每一次 Servlet 被访问时都会执行,执行多次
  • destroy() ===> Servlet 被杀死时执行;在服务器被正常关闭时执行
  • getServletConfig() ===> 获取 Servlet 的配置对象
  • getServletInfo() ===> 获取 Servlet 的信息

二、生命周期

  • 创建 ===> 执行 init 方法;仅执行一次
  • 提供服务 ===> 执行 service 方法;执行多次
  • 销毁 ===> 执行 destroy;仅执行一次

三、琐碎知识点

1.Servlet 的创建时间

默认情况下,第一次被访问时,Servlet 被创建;但是可以配置 <load-on-startup/> 标签指定 Servlet 的创建时间

    <!--配置 Servlet-->
    <servlet>
        <!--配置 Servlet 名称,随便-->
        <servlet-name>servletName</servlet-name>
        <!--配置 Servlet 对应的全类名-->
        <servlet-class>web.servlet.FirstServlet</servlet-class>
        <!--指定 Servlet 的创建时间-->
        <!--
        1.第一次被访问时创建 <load-on-startup/> 被配置为 负数 时生效
        2.在服务器启动时创建 <load-on-startup> 配置为 正数或0 时生效
        3.<load-on-startup> 默认为 -1
        -->
        <load-on-startup>0</load-on-startup>
    </servlet>

2.Servlet 如何处理多线程问题

Servlet 是单例(init 方法只执行一次)的;因此多个用户同时访问时,可能存在线程安全问题;因为一个对象当中成员变量是被共享的,而方法是不被共享的;因此尽量不要在 Servlet 中定义成员变量;即使定义了成员变量,也不要对其修改(可以获取)

3.destroy 方法的执行时刻

在 Servlet 被销毁之前执行,一般用于释放资源,类似于临终前的遗言

作者:蓝月

-------------------------------------------

个性签名:能我之人何其多,戒骄戒躁,脚踏实地地走好每一步

原文地址:https://www.cnblogs.com/viplanyue/p/13573685.html