部署描述文件web.xml解析(二) Servlet生命周期
2015-05-20 21:42
281 查看
简介
本文简要介绍Servlet的生命周期,理解Servlet生命周期概念能够更好的配置部署描述文件。Servlet的生命周期
Jave Web应用的生命周期由Servlet容器控制,而Servlet作为Java Web应用的核心组件,其生命周期也是由Servlet容器来控制的。Servlet的生命周期可以分为三个阶段:初始化阶段、运行阶段和销毁阶段。Servlet接口中定义了3个方法:init(), service(), destroy(),分别在Servlet不同阶段被Servlet容器调用。为了便于链接Servlet的生命周期,这里列出Servlet API UML类图:
初始化阶段
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接口的GenericServlet实现类的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。
3. 当Web应用被重新启动时,Web应用中的所有Servlet都会在特定时刻被重新初始。
运行阶段
Servlet规范规定,Servlet容器响应客户请求特定Servlet的流程如下:销毁阶段
当Web应用被终止时,Servlet容器会先调用Web应用中所有Servlet对象的destroy()方法,然后再销毁这些Servlet对象,在调用destroy()方法的实现中,可以释放Servlet对象所占用的资源(如关闭文件输入流和输出流、关闭与数据库的连接等)。此外,容器还会销毁与Servlet对象关联的ServletConfig对象。总结
在本文,介绍了Servlet生命周期过程中涉及到的类和接口,这是理解Web.xml配置文件的基础,接下来我们介绍和Servlet对象相关配置。相关文章推荐
- Servlet容器模型(二)部署描述文件(web.xml)
- Servlet部署描述文件(web.xml)
- 解析web.xml中在Servlet中获取context-param和init-param内的参数
- web.xml 中的servlet /filter /listener区别与联系 及interceptor解析
- 部署描述文件web.xml解析(三) 默认主页
- tomcat不能解析带有命名空间的web.xml中的servlet
- 部署描述文件web.xml解析(六) 配置应用程序监听器
- servlet之web.xml文件部分解析(2014年10月31日)
- Servlet容器模型(二)部署描述文件(web.xml)
- Java Web知识点整理:第二章:Jquery学习、xml学习、XML的解析、Servlet学习
- 部署描述文件web.xml解析(五) 声明过滤器
- Servlet中web.xml的配置解析
- 解析web.xml中在Servlet中获取context-param和init-param内的参数
- 常规容器下SpringBootServletInitializer如何实现web.xml作用解析
- 常规容器下SpringBootServletInitializer如何实现web.xml作用解析
- Servlet中web.xml的配置解析(续)
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- servlet 通过读取web.xml获得全局变量
- web.xml配置错误:java.lang.ClassNotFoundException: com.shiro.web.InitServlet解决!~
- web.xml中出现<servlet-name>default</servlet-name>是什么意思?