什么是servlet容器?

原文:https://www.programcreek.com/2013/04/what-is-servlet-container/

1.什么是Web服务器?

要知道什么是servlet容器,首先需要知道什么是Web Server。

 

Web服务器使用HTTP协议传输数据。在一个简单的情况下,用户在浏览器(客户端)中输入URL(例如www.Programcreek.com/static.html),并获取一个要阅读的网页。因此,服务器所做的就是向客户端发送一个网页。转换采用HTTP协议,该协议指定请求和响应消息的格式。

2.servlet容器是什么?

正如我们在这里看到的,用户/客户端只能从服务器请求静态网页。如果用户想要根据他的输入阅读网页,这是不够的。Servlet容器的基本思想是使用Java动态生成服务器端的网页。因此servlet容器本质上是与servlet交互的Web服务器的一部分。

什么是servlet容器?

Servlet容器是servlet的容器。

3.servlet是什么?

Servlet是javax.servlet包中定义的接口。它声明了Servlet生命周期的三种基本方法-init()、service()和delete()。它们由每个servlet(在SDK中定义或自定义)实现,并由服务器在特定时间调用。

  1. init()方法在servlet生命周期的初始化阶段被调用。它传递了一个实现javax.servlet.ServletConfig接口的对象,该接口允许servlet从Web应用程序访问初始化参数。
  2. 在每个请求初始化后都会调用service()方法。每个请求都在自己的单独线程中服务。Web容器为每个请求调用servlet的service()方法。service()方法确定正在发出的请求类型,并将其分派给处理请求的适当方法。
  3. 当servlet对象被销毁时,会调用DEMPUTE()方法。它释放正在保存的资源。

从servlet对象的生命周期中,我们可以看到servlet类通过类加载器动态地加载到容器中。每个请求都在自己的线程中,servlet对象可以同时服务多个线程(线程不安全)。当它不再被使用时,它应该是JVM收集的垃圾。

与任何Java程序一样,servlet在JVM中运行。为了处理HTTP请求的复杂性,引入了servlet容器。servlet容器负责servlet的创建、执行和销毁。

4.servlet容器和Web服务器如何处理请求?

  1. Web服务器接收HTTP请求
  2. Web服务器将请求转发给servlet容器
  3. 如果servlet不在容器中,则动态检索该servlet并将其加载到容器的地址空间中。
  4. 容器调用servlet的init()方法进行初始化(在首次加载servlet时调用一次)
  5. 容器调用servlet的service()方法来处理HTTP请求,即读取请求中的数据并制定响应。servlet保留在容器的地址空间中,可以处理其他HTTP请求。
  6. Web服务器将动态生成的结果返回到正确位置

以下图表标记了这六个步骤:

什么是servlet容器?

5.JVM的作用

使用servlet允许JVM在单独的Java线程中处理每个请求,这是servlet容器的关键优势之一。每个servlet都是一个Java类,具有响应HTTP请求的特殊元素。Servlet包含的主要功能是转发请求以更正servlet以进行处理,并在JVM处理完后将动态生成的结果返回到正确的位置。在大多数情况下,servlet容器在单个JVM中运行,但是当容器需要多个JVM时,有一些解决方案。