Servlet生命周期

理解Servlet生命周期与请求处理流程
本文详细解析了Servlet从加载、初始化、处理请求到销毁的完整生命周期,并深入讲解了Servlet如何响应客户端请求,包括初始化init()方法的作用、service()方法的调用机制及其与doGet()和doPost()的关系,以及Servlet如何处理更多的客户端请求直至被服务器销毁的过程。

客户端请求该 Servlet

加载 Servlet 类到内存;

实例化并调用init()方法初始化该 Servlet

service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doGet()doPut()doTrace()doDelete()doOptions());

destroy()

 

加载和实例化 Servlet。这项操作一般是动态执行的。然而,Server 通常会提供一个管理的选项,用于在 Server 启动时强制装载和初始化特定的 Servlet

Server 创建一个 Servlet的实例

第一个客户端的请求到达 Server

Server 调用 Servlet 的 init() 方法(可配置为 Server 创建 Servlet 实例时调用,在 web.xml 中 <servlet> 标签下配置 <load-on-startup> 标签,配置的值为整型,值越小 Servlet 的启动优先级越高)

一个客户端的请求到达 Server

Server 创建一个请求对象,处理客户端请求

Server 创建一个响应对象,响应客户端请求

Server 激活 Servlet 的 service() 方法,传递请求和响应对象作为参数

service() 方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息

service() 方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如 doGet() 或 doPost() 或程序员自己开发的新的方法。

对于更多的客户端请求,Server 创建新的请求和响应对象,仍然激活此 Servlet 的 service() 方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用 init() 方法。一般 Servlet 只初始化一次(只有一个对象),当 Server 不再需要 Servlet 时(一般当 Server 关闭时),Server 调用 Servlet 的 destroy() 方法。

加载(服务器启动时,会到web.xml文件中去找到Servlet文件的配置并创建servlet的实例) →初始化(init()此方法只执行一次) → 执行(service(),doGet(),doPost()) →销毁(销毁destory())
service():方法本身包含了doGet()doPost().如果服务器发现了service()方法,则不再执行doGet(),doPost().
一般不建议去重写父类的service方法.因为重写了此方法doGet方法和doPost方法将得不到利用.
没有service()方法默认执行doGet()方法.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值