10. Servlet入门 - Servlet的生命周期

2022-01-14 17:42:10 浏览数 (1)

10. Servlet入门 - Servlet的生命周期

Servlet 生命周期概述

一个Servlet 对象从创建到销毁的过程

Servlet 生命周期方法

1、执行 Servlet 构造器方法

2、执行 init 初始化方法

第一、二步,是在第一次访问,的时候创建 Servlet 程序会调用。

3、执行 service 方法

第三步,每次访问都会调用。

4、执行 destroy 销毁方法

第四步,在 web 工程停止的时候调用。

代码演示
1.创建Servlet的构造方法
2.在 init 初始化方法,设置打印信息
3.在 service 方法,设置打印信息
4.在destory 销毁方法,设置打印信息
6.启动 tomcat 服务,访问 servlet
  • 第一次访问 Servlet 将会执行 构造器方法、init 方法、service 方法
  • 第二次访问只会执行 service 方法
7.停止 tomcat 服务,触发 destory 方法

Servlet生命周期描述

  1. 常规【重点】 默认情况下, 来了第一次请求, 会调用init()方法进行初始化【调用一次】 任何一次请求 都会调用service()方法处理这个请求 服务器正常关闭或者项目从服务器移除, 调用destory()方法进行销毁【调用一次】
  2. 扩展 servlet是单例多线程的, 尽量不要在servlet里面使用全局(成员)变量,可能会导致线程不安全 单例: 只有一个对象(init()调用一次, 创建一次) 多线程: 服务器会针对每次请求, 开启一个线程调用service()方法处理这个请求

load-on-startup 启动项

在上面的示例中,我们通过Servlet的构造器打印信息得知,Servlet是在第一次请求的时候创建的。

那么下面带来一个需求问题。

如果我想在创建 Tomcat 服务的时候,在请求来之前,同时创建 Servlet,那么该怎么配置呢?

这个需求在后续 在SpringMVC里面会遇到。

这个时候,我们就需要依赖 load-on-startup 启动项参数来配置了。

这个参数有两种配置方式,如下:

web.xml 配置 load-on-startup 的方式

1555981767256

WebServlet 注解配置 load-on-startup 的方式

  • 默认情况下,没有配置 loadOnStartup, Servlet 在 tomcat 服务启动后,不会立即创建,只会在第一次请求到来,才会创建
  • 当设置了 loadOnStartup 参数,则启动 tomcat 服务的时候,立即创建 Servlet 对象
代码语言:javascript复制
@WebServlet(value = "/demo3", loadOnStartup = 1) // loadOnStartup 配置的值越小,优先级越高

小结

  1. Servlet生命周期方法
    • init() 初始化
    • service() 服务
    • distory() 销毁
  2. Servlet生命周期描述 默认情况下, 第一次请求的时候, 调用init()方法进行初始化【调用一次】 任何一次请求, 都会调用service()方法进行处理这个请求 服务器正常关闭/项目从服务器移除, 调用destory()方法进行销毁【调用一次】 “Servlet是单例多线程的”

0 人点赞