Java 应用服务器如何与Http服务器交互

Java 应用服务器如何与Http服务器交互,java,servlets,application-server,httpserver,grizzly,Java,Servlets,Application Server,Httpserver,Grizzly,我已经使用Tomcat和Jetty很长时间了。据我所知。应用服务器(Servlet容器)是Servlet的容器。http服务器处理http请求和响应。但一直以来,我都觉得这两者是如何运作的 有人能给我一个关于Http服务器和应用服务器工作原理的概要吗?因为我在读书。它是一个NIO服务器。那么它是HTTP服务器吗?还是应用服务器 HTTP服务器是一个主要处理HTTP请求并向客户端提供HTTP响应的组件。当然,HTTP服务器还有其他功能,例如请求转发、错误处理等,但是对于更高级别的视图,理解HTTP

我已经使用Tomcat和Jetty很长时间了。据我所知。应用服务器(Servlet容器)是Servlet的容器。http服务器处理http请求和响应。但一直以来,我都觉得这两者是如何运作的


有人能给我一个关于Http服务器和应用服务器工作原理的概要吗?因为我在读书。它是一个NIO服务器。那么它是HTTP服务器吗?还是应用服务器

HTTP服务器是一个主要处理HTTP请求并向客户端提供HTTP响应的组件。当然,HTTP服务器还有其他功能,例如请求转发、错误处理等,但是对于更高级别的视图,理解HTTP服务器实现请求/响应机制就足够了。它与任何编程语言实现无关

Servlet容器是实现Java的Servlet规范的组件。servlet主要使用Java语言实现。它们类似于HTTP服务器,因为它们处理请求和响应(注意,这些请求和响应与HTTP请求和响应相比是更高的抽象)、过滤它们、链接它们等等

在大多数情况下,servlet容器放在HTTP服务器后面。HTTP服务器将HTTP请求(取决于一些URL映射规则)转发到servlet容器。servlet中高度抽象的请求/响应规范的实现之一是HTTP请求/响应。通过这种方式,HTTP服务器和servlet容器可以协同工作,为动态网页等提供HTTP对话服务


应用服务器是一个更复杂的组件(通常,它封装了HTTP服务器和servlet容器(如果它是面向Java的应用服务器的话))。这样的组件提供了实现某些给定规范的模块,例如JBoss应用服务器/WildFly实现的Java EE规范。

所以我猜Tomcat和Jetty是应用服务器?Tomcat是一个servlet容器。它实现了servlet Java规范,但不是整个Java企业版堆栈。它还包含一个web服务器。我无法向您提供有关Jetty的专家详细信息,但他们主页的标题是“Jetty-Servlet引擎和Http服务器”:(如果没有Http服务器,Servlet容器是否可以存在?这是一个好问题。理论上,它可以,因为servlet使用请求和响应的抽象概念。servlet本身是一个抽象,HTTPservlet是其具体实现之一,但不是唯一的实现。查看servlet javadocs here()并导航到它的各种实现(以及阅读
服务
方法文档),您将了解我的意思。另一方面,我确实从未在没有web服务器的情况下使用servlet容器,我认为这是最常见的情况。我可以在这里找到很好的答案,从web服务器到应用服务器部分。