Java Web的生命周期
Java Web的生命周期是由Servlet容器来控制的,Java Web应用的声明周期包括三个阶段:
启动阶段
- 把web.xml文件加载到内存中
- 为Java Web应用创建一个ServletContext对象
- 对所有的Filter进行初始化
- 对那些需要在Web应用启动时就被初始化的Servlet进行初始化
运行阶段
加入客户端请求的Servlet还不存在,Servlet容器会先初始化Servlet,然后再调用它的service()服务方法。
终止阶段
- 销毁Java Web应用中所有处于运行时状态的Servlet
- 销毁所有处于运行时状态的Filter
- 销毁所有与Java Web应用相关的对象,如ServletContext对象等,并且释放Web应用所占用的相关资源
Servlet的生命周期
初始化阶段
- Servlet容器加载Servlet类,把它的.class文件中的数据读入内存中
- Servlet容器创建ServletConfig对象,Servlet对象包含了特定的Servlet的初始化配置信息,将ServletConfig对象与当前Web应用的ServletContext对象关联
- Servlet容器创建Servlet对象
- Servlet容器调用Servlet对象的init()方法
以上过程将servlet,servletconfig,servletcontext相关联。
在以下情况下,Servlet会进入初始化阶段:
- 当Web应用处于运行时阶段,特定Servlet被客户端首次请求访问。大多数的Servlet都会在这种情况下被Servlet容器初始化
- 如果在web.xml文件中为一个Servlet设置了<load-on-startup>元素,那么当Servlet容器启动Servlet所属的Web应用时,就会初始化这个Servlet(启动初始化)
- 当Web应用被重新启动时,Web应用中的所有Servlet都会在特定的时刻被重新初始化
(注意:即使两个Servlet的class一样,也会生成两个Servlet对象,因为它们的ServletConfig可能是不同的)
运行时阶段
当Servlet容器接受到要求访问特定Servlet的客户请求时,Servlet容器会创建针对这个请求的ServletRequest和ServletResponse,然后调用相应 Servlet对象的service()方法。
当Servlet容器把Servlet生成的响应结果发送给了客户,Servlet容器就会销毁ServletRequest对象和ServletResponse对象。
销毁阶段
调用servlet对象的destroy()方法,还会销毁与Servlet对象关联的ServletConfig对象。