购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2.1 Servlet生命周期

1.Servlet

Servlet是运行在服务器上的小程序,主要用于处理客户端传来的HTTP请求,它可以访问服务器的资源,如文件、数据库等,再根据请求完成相应的业务逻辑处理后返回响应。Servlet的执行过程主要有以下几个步骤。

(1)客户端发送请求,服务器将客户端的请求封装成请求对象,同时生成针对客户端的响应对象。

(2)服务器根据客户端的请求URL,在底层web.xml文件中找到相应的Servlet类。

(3)Servlet从请求对象中取得各种请求信息,并完成业务逻辑的处理。

(4)Servlet将处理结果封装在响应对象中输出给服务器。

(5)服务器将Servlet生成的响应对象解析成响应报文输出给客户端的浏览器。

2.生命周期

Servlet的生命周期是指一个Servlet对象从创建到销毁的过程,它定义了一个Servlet被初始化、销毁,以及接收请求、响应请求、提供服务的具体规则。

按照功能的不同,Servlet的生命周期大致可以分成3个阶段,分别是Servlet对象的初始化、Servlet对象提供服务和Servlet对象的销毁。

(1)Servlet对象的初始化:init()方法

在默认情况下,服务器在第一次接收到客户端发送的请求时,会解析请求并创建对应的Servlet对象。创建Servlet对象之后,服务器会调用init()方法对其进行初始化。需要注意的是,一个Servlet对象无论被请求多少次,只会被创建一次。也就是说,在Servlet的整个生命周期中,init()方法只会被执行一次。

(2)Servlet对象提供服务:service()方法

完成 Servlet 对象的初始化之后,服务器会调用 service()方法处理请求,同时会创建一个请求(ServletRequest)对象和一个响应(ServletResponse)对象,并把它们作为参数传入service()方法。service()方法可以通过 ServletRequest 对象获取客户端的各种请求信息,从而根据请求类型调用doGet()或者doPost()等方法。完成业务逻辑的处理之后,service()方法继续通过ServletResponse对象来设置响应信息。Servlet每次收到用户请求都会调用service()方法,也就是说,在Servlet的整个生命周期中,service()方法可以被执行多次。

(3)Servlet对象的销毁:destroy()方法

Web应用在卸载或服务器停止执行时会销毁Servlet对象,销毁之前服务器会调用destroy()方法执行诸如释放缓存、关闭连接、保存数据等操作。在 Servlet 的整个生命周期中,destroy()方法也只会被执行一次。

Servlet的生命周期如图2-35所示。

图2-35 Servlet的生命周期

3.Servlet接口

Servlet接口是编写Servlet应用时必须实现的一个接口,它位于javax.servlet包中,Servlet接口中定义的方法如表2-1所示。

表2-1 Servlet接口定义的方法

init()、service()和destroy() 3个方法是与Servlet生命周期相关的,它们会在某个特定的时刻被调用,具体的调用顺序如下。

(1)当一个Servlet被构造时,调用init()方法完成初始化。

(2)当客户端发出请求时,调用service()方法提供服务。

(3)当Servlet服务完成时,调用destroy()方法进行销毁。 D2Lc3yzb51H5+AXm6b46GU76Gayqk0hhVwyn5PuatttrlrLWlJ/XYVDC6s8/ZuPO

点击中间区域
呼出菜单
上一章
目录
下一章
×