Servlet生命周期(图解)

阅读更多

1、Servlet生命周期其实很简单:只有一个主要状态——初始化。如果Servlet没有初始化,则要要么正在初始化(运行构造函数及init()方法)、正在撤消(运行其destory()方法),要么就是不存在。

 

2、图解
    Servlet生命周期(图解)_第1张图片
 3、Servlet生命周期三大重要时刻

 

    1)init():初始化,servlet实例被创建后,并在servlet能为客户请求提供服务前,容器会调用init()方法(只会调用一次)。可以访问ServletConfig和ServletContext对象,从而获取有关Servlet已经Web应用的信息,进而对Servlet做些初始化工作。

    2)service():服务,但第一个客户请求到达时,容器创建或从线程池分配一个线程,调用service()方法(同时以参数形式传入请求和响应对象)。一般无需覆盖此方法,而是由其调用父类HttpServlet的service(),然后根据请求中的HTTP方法(Get或Post等),调用覆写的DoGet()或doPost()等方法(所以我们的Servlet中必须至少覆写doGet()及doPost()方法中的一个)。service()方法结束时,线程也结束(或者被回收到线程池)。

    3)destory():销毁,在容器移除Servlet前,使得Servlet能有机会关闭数据库连接、停止某些后台线程、将cookie列表和点击计数写入磁盘、以及执行其他清理工作等。

 

4、补充说明:

 

    1)每个请求都在一个单独的线程中运行,任何特定的Servlet类都只有一个实例(即单实例)!

    2)多个请求访问同一个Servlet时,容器会为每一个请求创建一个单独的线程进行处理,也就是说容器会运行多个线程来处理对同一个Setvlet的多个请求。对应每个客户请求,都会生成一对新的请求和响应对象。

    3)图解
    Servlet生命周期(图解)_第2张图片

  • Servlet生命周期(图解)_第3张图片
  • 大小: 39.9 KB
  • Servlet生命周期(图解)_第4张图片
  • 大小: 19.3 KB
  • 查看图片附件

你可能感兴趣的:(servlet,生命周期,init,service,destory)