Servlet&JSP基础篇之Servlet的生命周期

Servlet&JSP基础篇之Servlet的生命周期

首先介绍容器对Servlet的控制,流程如下:

  • 点击一个指向某个Servlet的URL。

  • 容器得知该URL指向一个Servlet,创建两个对象:HttpServletResponse,HttpServletRequest

  • 容器根据根据URL找到相应的Servlet,并为其分配或者创建一个线程,调用其service()方法。

  • service()方法会根据客户发出的Http方法(GET,POST)调用Servlet的doGET()或者doPOST()并传入HttpServletResponse和HttpServletRequest。

  • Servlet使用响应对象将响应写至客户。响应由容器传回。

  • service()方法结束,所以线程要么撤回,要么返回到容器管理的一个线程池。请求和响应的对象引用已经出了作用域,所以这些对象已经没有意义。

  • 客户得到响应。

问题一: Servlet何时产生?

在上述流程中,直接从Servlet中期切入,并未说明Servlet何时产生的。

首先,Servlet只有四个状态:

  • 不存在
  • 正在初始化
  • 初始化(主要状态)
  • 正在撤销

这四个状态正是Servlet的“一生”,下面将依次介绍:

1. 不存在状态

在Servlet类加载及之前都属于这个状态,没什么好说的。

2.正在初始化

运行构造函数和init()方法构成了这个状态的主要内容。需要注意的是,运行完构造函数,还不能称其为真正的Servlet,此时,该类还不能提供Servlet服务,init()方法之后才可以,不过之后也就进入了初始化状态。init()可复写,使你在处理客户请求之前有机会进行一些初始化代码,只可以调用一次。

3.初始化状态

该状态主要包含service()方法,Servlet大部分时间在此方法里,用于处理客户请求(GET,POST)。需要注意的是,每个请求都在不同的线程里运行,而Servlet只有一个实例。service()方法不需要覆盖,一般覆盖的是doGET或者doPOST。

4.正在撤销

该状态的主要方法是destroy(),此方法用于在Servlet实例在被垃圾回收之前清理资源,只可以调用一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值