在本文中,我写了一些有关Web服务器,Servlet容器及其与JVM的关系的基本思想。我想证明Servlet容器不过是Java程序。
1.什么是Web服务器?
要知道什么是Servlet容器,我们首先需要知道什么是Web服务器。
甲Web服务器使用HTTP协议来传输数据。在一个简单的情况下,用户在浏览器(客户端)中输入URL(例如www.programcreek.com/static.html),然后获取要读取的网页。因此,服务器要做的就是向客户端发送网页。转换采用HTTP协议,该协议指定了请求和响应消息的格式。
2.什么是Servlet容器?
正如我们在这里看到的,用户/客户端只能从服务器请求静态网页。如果用户想根据他的输入来阅读网页,这还不够好。Servlet容器的基本思想是使用Java在服务器端动态生成网页。因此,Servlet容器实质上是与Servlet交互的Web服务器的一部分。
Servlet容器是Servlet的容器。
3.什么是Servlet?
Servlet是javax.servlet包中定义的接口。它声明了Servlet生命周期的三种基本方法-init(),service()和destroy()。它们由每个servlet(在SDK中定义或自定义)实现,并在特定时间由服务器调用。
在servlet生命周期的初始化阶段将调用init()方法。向其传递一个实现javax.servlet.ServletConfig接口的对象,该接口允许servlet从Web应用程序访问初始化参数。
每个请求在初始化之后都会调用service()方法。每个请求都在其自己的单独线程中得到服务。Web容器针对每个请求调用servlet的service()方法。service()方法确定发出的请求的类型,并将其分派给适当的方法以处理该请求。
当应该销毁servlet对象时,调用destroy()方法。它释放了所持有的资源。
从servlet对象的生命周期来看,我们可以看到servlet类是由类加载器动态加载到容器中的。每个请求都在其自己的线程中,并且servlet对象可以同时服务多个线程(线程不安全)。如果不再使用它,则应该由JVM对其进行垃圾回收。
像任何Java程序一样,该servlet在JVM中运行。为了处理HTTP请求的复杂性,引入了servlet容器。servlet容器负责servlet的创建,执行和销毁。
- Servlet容器和Web服务器如何处理请求?
1.Web服务器收到HTTP请求
2.Web服务器将请求转发到servlet容器
3.如果该servlet不在容器中,则将对其进行动态检索并加载到该容器的地址空间中。
4.容器调用servlet的init()方法进行初始化(首次加载servlet时调用一次)
5容器调用servlet的service()方法来处理HTTP请求,即读取请求中的数据并制定响应。Servlet保留在容器的地址空间中,并且可以处理其他HTTP请求。
6。Web服务器将动态生成的结果返回到正确的位置
下图标记了六个步骤:
5. JVM的作用
使用Servlet可以使JVM在单独的Java线程中处理每个请求,这是Servlet容器的主要优点之一。每个Servlet都是一个Java类,带有特殊元素来响应HTTP请求。Servlet包含的主要功能是转发请求以更正servlet以进行处理,并在JVM处理完动态生成的结果后将其返回到正确的位置。在大多数情况下,servlet容器在单个JVM中运行,但是当容器需要多个JVM时,有一些解决方案。