Servlet的生命周期
Servlet执行的过程
- 浏览器发出请求到
Tomcat
服务器 - 服务器收到请求后判断要访问的是哪一个应用
- 然后找到应用的
web.xml
,从其中找到路径映射的Servlet
查找顺序:应用的classes
目录–>应用的lib
下面的jar
包–>Tomcat/lib
下的jar
包 - 找到对应的类
- 实例化
Servle
t对象,(只有在第一次访问的时候进行实例化,除非配置为load-on-startup,在服务器启动时就进行加载) - 调用
init()
方法 - 调用
service()
方法 - 服务器返回相应结果
服务器在Servlet创建之前的准备工作
- 读取
web.xml
文件,首先读取<context-parm></context-parm>
节点,然后创建一个ServletContext实例,name为键,value为值。存储到上下文环境中。 - 读取
<listener></listener>
节点,根据配置的class路径创建监听。 - 读取
<filter></filter>
节点,根据路径去实例化过滤器。
Servlet的生命周期
init()–>service()–>destroy()
1. init():负责初始化Servet对象,只调用一次。
2. service():单实例多线程,处理响应客户端请求。
3. destroy():终止Servlet,只调用一次。
Servlet创建和销毁的时间
- 客户端首次请求Servlet时,Servlet容器会判断内存中是否存在该Servlet,如果不存在则创建它
- Servlet容器停止或者重新启动时,Servlet容器调用Servlet的destroy方法来释放资源。