Servlet生命周期(图解)
1、Servlet生命周期其实很简单:只有一个主要状态——初始化。如果Servlet没有初始化,则要要么正在初始化(运行构造函数及init()方法)、正在撤消(运行其destory()方法),要么就是不存在。
2、图解
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)图解
上一篇: NLP中的卷积神经网络
下一篇: Http请求及响应全过程