欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Servle的生命周期——初始化、运行、销毁全部过程

程序员文章站 2022-03-11 21:48:48
...

Servlet初始化、运行、销毁全部过程


Servlet体系结构是建立在 Java 多线程机制上的,它的生命周期由 Web 容器负责
Servlet 生命周期定义了 Servlet 从创建到毁灭的整个过程,总共分为四个步骤:
调用 init() 方法初始化
调用 service() 方法来处理客户端的请求
调用 destroy() 方法释放资源,标记自身为可回收
被垃圾回收器回收

注:当客户端第一次请求某个 Servlet 时,Servlet 容器将会根据 web.xml 的配置文件实例化这个 Servlet 类。当有新的客户端请求该 Servlet 时,一般不会再实例化该 Servlet 类。
当有多个请求时,Servlet 容器会起多个线程来访问同一个 Servlet 实例的 service() 方法,如果该 Servlet 实例中有共享的实例变量,需要注意多线程安全问题。


servlet初始化

servlet初始化步骤


  1. Servlet容器加载servlet类,把它的.Class文件中的数据读到内存中。
  2. Servlet容器创建servletConfig对象。servletConfig对象包含了servlet的初始化配置信息。此外servlet容器还会使得servletConfig对象与当前的web应用的servletContext对象关联。
  3. Servlet容器创建servlet对象。
  4. Servlet容器调用servlet对象的init(ServletConfig config)方法。

通过初始化步骤,创建了servlet对象和servletConfig对象,并且servlet对象与servletConfig对象关联,而servletConfig对象又与当前对象的servletContext对象关联。当servlet容器完成servlet后,servlet对象只要通过getServletContext()方法就能得到web应用的servletContext对象。

servlet初始化的三种情况

1.Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的Servlet元素之间添加如下代码:

<loadon-startup>1</loadon-startup> 

说明:
改代码中的数值当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。 
2.在Servlet容器启动后,客户首次向Servlet发送请求
3.Servlet类文件被更新后,重新装载Servlet


servlet运行

当servlet容器接到特定的http请求时,Servlet 容器会产生一个新的线程,创建针对与这个请求的servletRequest和servletResponse对象并调用 Servlet实例的 service 方法。并把这两个对象当做参数传递给service()方法,service方法会检查 HTTP 请求类型(GET、POST、PUT、DELETE等;并在适当的时候调用doGet、doPost、doPut、doDelete方法。Service()方法通过servletRequest对象获得请求信息,并处理该请求,再通过servletResponse对象生成响应结果。在这个阶段sevlet可以随时响应客户端的请求。
并把这两个对象当做参数传递给service()方法

对于Tomcat来说,它会将传递过来的参数放在一个Hashtable中,该Hashtable的定义是:

private Hashtable<String String[]> paramHashStringArray = 
        new Hashtable<String String[]>();

这是一个String–>String[]的键值映射。
HashMap线程不安全的,Hashtable线程安全。


servlet销毁

当Web应用被终止时,servlet容器会先调用web应用中所有的servlet对象的
destroy()方法,然后再销毁servlet对象。此外容器还会销毁与servlet对象关联的servletConfig对象。
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时调用。destroy() 方法主要执行如关闭数据库连接、释放资源等行为。
调用 destroy 方法之后,servlet 对象被标记为垃圾回收,等待 JVM 的垃圾回收器进行处理。
Servle的生命周期——初始化、运行、销毁全部过程


鉴于自身知识有限,所以我写的内容大部分来源于网络中已有知识的吸收理解,欢迎各位转载,评论,大家一起学习进步!如有侵权,请及时和我联系。

相关标签: Servlet