一、JavaWeb应用的生命周期
JavaWeb应用的生命周期是由Servlet容器来控制的。归纳起来,JavaWeb的生命周期包括三个阶段:
1)启动阶段:加载Web应用的有关数据,创建ServletContext对象,对Filter(过滤器)和一些Servlet进行初始化。
2)运行时阶段:为客户端提供服务。
3)终止阶段:释放Web应用所占用的各种资源。
下面详细介绍生命你周期的各个阶段:
1、启动阶段:
Servlet容器在启动JavaWeb应用,完成以下操作:
(1)把web.xml文件中的数据加载到内存中。
(2)为JavaWeb应用创建一个ServletContext对象。
(3)对所有的Filter进行初始化。
(4)对那些需要在Web应用启动就初始化的Servlet进行初始化。
2、运行时阶段:
这是JavaWeb应用最主要的生命阶段。在这个阶段,应用的所有Servlet都处于待命状态,随时可以为响应客户端的特定请求,提供相应的服务。假如客户端请求的Servlet还不存在,Servlet容器会先初始化Servlet,然后再调用它的service()服务方法。
3、终止阶段:
Servlet容器在终止JavaWeb应用时,会完成以下操作:
(1)销毁JavaWeb应用中所有处于运行时状态的Servlet。
(2)销毁JavaWeb应用中所有处于运行时状态的Filter。
(3)销毁所有与JavaWeb应用相关的对象,如ServletCoontext对象等,并释放Web应用所占用的相关资源。
Servlet的生命周期可以分为三个阶段:初始化阶段、运行时阶段和销毁阶段。
在java.servlet.Servlet接口中定义了三个方法:init()、service()和destroy(),它们分别在Servlet生命周期的不同阶段被Servlet容器调用。
(1)Servlet容器加载Servlet类。把他的.class文件中的数据加载到内存中。
(2)Servlet容器创建ServletConfig对象。ServletConfig对象包含了特定Servlet的初始化配置信息。如,Servlet的初始化参数。此外,Servlet容器还会使得ServletConfig对象与当前Web应用的ServletContext对象相关联。
(3)Servlet容器创建Servlet对象。
(4)Servlet容器调用Servlet对象的init(ServletConfig config)方法,建立Servlet对象与ServletConfig对象的关联。
以上四步初始化创建了Servlet对象和ServletConfig对象,并且Servlet对象与ServletConfig对象关联,而ServletConfig对象又与当前Web应用的ServletContext对象关联。当Servlet容器初始化完Servlet后,Servlet对象只要通过getServletContext()方法就能得到当前Web应用的ServletContext对象。
在下列三种情况之一,Servlet会进入初始化阶段。
(1)当前Web应用处于运行时阶段,特定Servlet被客户端首次访问,多数Servlet都会在这种情况下被Servlet容器初始化。
(2)如果在web.xml文件中为一个Servlet设置了<load-on-startup>元素,那么当Servlet容器启动Servlet所属的Web应用时,就会初始化这个Servlet。(没有设置<load-on-startup>元素的Servlet,需要等到客户端首次访问该Servlet时,容器才会初始化这个Servlet)。
(3)当Web应用被重新启动时,Web应用中的所有Servlet都会在特定的时刻被初始化。
当Servlet容器把Servlet生成的响应结果发送给用户,Servlet容器就会销毁ServletRequest对象和ServletResponse对象。
此外,Servlet容器还会销毁与Servlet对象关联的ServletConfig对象。
二、Servlet生命周期
JavaWeb应用的生命周期由Servlet容器来控制,而Servlet作为JavaWeb应用最核心的主键,其生命周期也由Servlet容器来控制。Servlet的生命周期可以分为三个阶段:初始化阶段、运行时阶段和销毁阶段。
在java.servlet.Servlet接口中定义了三个方法:init()、service()和destroy(),它们分别在Servlet生命周期的不同阶段被Servlet容器调用。
1、初始化阶段:
Servlet的初始化阶段包括4个步骤:(1)Servlet容器加载Servlet类。把他的.class文件中的数据加载到内存中。
(2)Servlet容器创建ServletConfig对象。ServletConfig对象包含了特定Servlet的初始化配置信息。如,Servlet的初始化参数。此外,Servlet容器还会使得ServletConfig对象与当前Web应用的ServletContext对象相关联。
(3)Servlet容器创建Servlet对象。
(4)Servlet容器调用Servlet对象的init(ServletConfig config)方法,建立Servlet对象与ServletConfig对象的关联。
以上四步初始化创建了Servlet对象和ServletConfig对象,并且Servlet对象与ServletConfig对象关联,而ServletConfig对象又与当前Web应用的ServletContext对象关联。当Servlet容器初始化完Servlet后,Servlet对象只要通过getServletContext()方法就能得到当前Web应用的ServletContext对象。
在下列三种情况之一,Servlet会进入初始化阶段。
(1)当前Web应用处于运行时阶段,特定Servlet被客户端首次访问,多数Servlet都会在这种情况下被Servlet容器初始化。
(2)如果在web.xml文件中为一个Servlet设置了<load-on-startup>元素,那么当Servlet容器启动Servlet所属的Web应用时,就会初始化这个Servlet。(没有设置<load-on-startup>元素的Servlet,需要等到客户端首次访问该Servlet时,容器才会初始化这个Servlet)。
(3)当Web应用被重新启动时,Web应用中的所有Servlet都会在特定的时刻被初始化。
2、运行时阶段:
这个是Servlet的生命周期中最重要的阶段。在这个阶段,Servlet可以随时响应客户端的请求。当Servlet容器接收到要求访问特定Servlet的客户端请求时,Servlet容器会创建针对于这个请求的ServletRequest对象和ServletRresponse对象,然后调用相应Servlet对象的service()方法。service()方法从ServletRequest对象中获得客户请求信息,并处理该请求,再通过ServletResponse对象生成相应结果。当Servlet容器把Servlet生成的响应结果发送给用户,Servlet容器就会销毁ServletRequest对象和ServletResponse对象。
3、销毁阶段:
当Web应用被终止时,Servlet容器会先调用Web应用中所有Servlet对象的destroy()方法,然后再销毁这些对象。在destroy()方法的实现中,可以释放Servlet锁占用的资源(例如,关闭文件输入流输出流,关闭与数据库的连接)。此外,Servlet容器还会销毁与Servlet对象关联的ServletConfig对象。