Servlet运行周期
来源:互联网 发布:php嵌入html页面 编辑:程序博客网 时间:2024/05/20 00:49
Servlet运行在Servlet容器当中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()、destroy()方法来表示。
Servlet的生命周期包含了下面四个阶段:
(1)加载和实例化
Servlet容器负责加载和实例化Servlet。当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。Servlet容器通过类加载器来加载Servlet类,成功加载后,容器创建Servlet实例。因为容器是通过Java反射API来创建Servlet实例,调用的是Servlet的默认构造方法(即不带参数的构造方法),所以我们在编写Servlet类的时候,不应该提供带参数的构造方法。
(2)初始化
在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。初始化的目的是为了让Servlet对象在处理客户端请求前先完成一些初始化的工作,如建立数据库的连接、获取配置信息等。对于每一个Servlet实例,init()方法只被调用一次。在初始化期间,Servlet实例可以使用容器为它准备的ServletConfig对象从Web应用程序的配置信息(在web.xml中配置)中获取初始化的参数信息。
(3)请求处理
Servlet容器调用Servlet的service()方法对请求进行处理。在service()方法中,Servlet实例通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。
(4)服务终止
当容器检测到一个Servlet实例应该从服务器中被移除的时候,容器就调用实例的destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾回收机制所回收。如果再次需要这个Servlet处理请求,Servlet容器会创建一个新的Servlet实例。
Servlet的生命周期包含了下面四个阶段:
(1)加载和实例化
Servlet容器负责加载和实例化Servlet。当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。Servlet容器通过类加载器来加载Servlet类,成功加载后,容器创建Servlet实例。因为容器是通过Java反射API来创建Servlet实例,调用的是Servlet的默认构造方法(即不带参数的构造方法),所以我们在编写Servlet类的时候,不应该提供带参数的构造方法。
(2)初始化
在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。初始化的目的是为了让Servlet对象在处理客户端请求前先完成一些初始化的工作,如建立数据库的连接、获取配置信息等。对于每一个Servlet实例,init()方法只被调用一次。在初始化期间,Servlet实例可以使用容器为它准备的ServletConfig对象从Web应用程序的配置信息(在web.xml中配置)中获取初始化的参数信息。
(3)请求处理
Servlet容器调用Servlet的service()方法对请求进行处理。在service()方法中,Servlet实例通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。
(4)服务终止
当容器检测到一个Servlet实例应该从服务器中被移除的时候,容器就调用实例的destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾回收机制所回收。如果再次需要这个Servlet处理请求,Servlet容器会创建一个新的Servlet实例。
在整个Servlet的生命周期中,创建Servlet实例、调用实例的init()和destroy()方法都只进行一次,当初始化完成后,Servlet容器会将该实例保存在内存中,通过调用它的service()方法,为接收到的请求服务。下面给出Servlet整个生命周期过程的UML序列图。
阅读全文
0 0
- Servlet运行周期
- Servlet运行周期与运行原理
- Servlet运行周期与原理流程
- Servlet运行周期与原理流程
- Servlet运行周期与原理流程
- Servlet运行周期与原理流程
- Servlet运行周期与原理流程
- Servlet运行周期与原理流程
- servlet声明周期
- Servlet声明周期
- SERVLET的 生命 周期
- Servlet声命周期
- Servlet声明周期小结
- Servlet声明周期
- iOS的运行周期
- servlet 声明周期, 线程安全
- Servlet的定义和周期
- Jsp/servlet的声明周期
- 极验与vue的原生js结合
- forward 和redirect的区别?
- qml实现滚动条
- 自定义函数中返回值为指针的问题(1)
- linux(centos6.8)安装oracle11g
- Servlet运行周期
- TensorFlow-3-TensorBoard: Visualizing Learning
- 通过noVNC和websockify连接到QEMU/KVM
- 抛错HTTP Status 500
- 可变参数小讲解
- USB的工作原理
- iOS一些绘图经验
- 基于vue的个人文档中心
- BPM产品介绍