java服务器端开发-servlet:5、Servlet生命周期介绍(2022-08-27-3044更新完成)

94 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情

1、servlet生命周期

(1)什么是servlet生命周期?

servlet容器如何创建servlet对象、如何初始化、

如何调用servlet对象的方法处理请求,以及如何

销毁servlet对象的整个过程。

(2)生命周期的四个阶段

1)实例化

a,什么是实例化?

容器调用servlet的构造器创建一个servlet对象,

在默认情况下,不管有多少个请求,容器只会创建一个servlet对象。

b,什么时候实例化?

情况1:在默认情况下,容器只有收到请求之后,才会创建servlet对象。

情况2: 容器在启动的时候,就将某些servlet对象创建好。

这些servlet必须配置一个参数 参数

参数:

大于等于0的整数。

值越小,优先级越高。

2)初始化

a,什么是初始化

容器创建好servlet对象之后,会立即调用init方法。

b,怎样实现初始化处理逻辑?

b1,一般情况下,不需要写init方法,

因为GenericServlet已经实现了init方法:

将容器创建的ServletConfig对象保存下来,

并且提供了getServletConfig方法来获得该对象。

调用了一个空的init方法 (该init方法用于子类去override)。

b2,如果要实现自己的初始化处理逻辑,只要 override init() 方法。

b3,初始化方法只会执行一次。

b4,ServletConfig对象可以用来访问,servlet的初始化参数。

3)就绪【未有demo,查找源码或ppt】

a,什么是就绪

servlet容器收到请求之后,会调用servlet对象的service方法来处理请求。

b,如何编写业务处理逻辑?

方式一:override HttpServlet的service方法。

HttpServlet的service方法是这样实现的:

依据请求类型调用doGet或者doPost方法,但是,

doGet方法和doPost方法只是简单地抛出了一个异常。

方式二:override HttpServlet的doGet和doPost方法。

4)销毁【未有demo,查找源码或ppt】

a,什么是销毁

容器依据自身的算法来决定是否销毁servlet对象。

容器在销毁servlet对象之前,会调用servlet对象的destroy方法。

b,destroy方法只会执行一次。

(3)servlet生命周期相关的几个接口与类【未有demo,查找源码或ppt】

a,Servlet接口

init(ServletConfig config)

service(ServletRequest req,ServletResponse res)

destroy()

b,GenericServlet抽象类:

实现了Servlet接口中的部分方法(实现了init,destroy方法)。

c,HttpServlet抽象类:

继承了GenericServlet,实现了service方法。

d,ServletConfig接口

e,ServletRequest接口是HttpServletRequest接口的父接口,

ServletResponse接口是HttpServletResponse的父接口。