Ric*_* Yu 3 java tomcat servlets
目前,我正在学习Java Web 开发。
很多对我来说似乎只是配置,我觉得我的理解很肤浅,因为我只看到配置(即在 web.xml 文件中定义您的 servlet 及其映射,通过扩展 HttpServlet 类来创建自定义 Servlet,在main方法中实例化Tomcat等)
我想更多地了解幕后实际发生的事情 - 所以我需要一些指导。
为此,我从以下链接粗略地阅读了 Tomcat 和 servlet:
所以我认为我从中了解到的是,Servlet 位于 Tomcat 实例(Servlet 容器)内,Tomcat 处理所有接收客户端的所有请求并将它们中继到 Servlet。servlet 处理请求,发回响应,然后 Tomcat 将响应发送回客户端。我想在我的本地设置中,我的机器将充当客户端和服务器。
鉴于上述我想知道:
对众多问题表示歉意,并感谢您帮助澄清。
Servlet规范对此进行了详细解释。该规范非常容易阅读;我建议尝试一下。
\n作为简化概述\xe2\x80\xa6
\nServlet 容器的工作是处理传入的请求,该请求只是一堆文本。Servlet 容器提取各个部分并将它们组装成请求对象。
\n同样,servlet 生成的响应被打包为响应对象。Servlet 容器的工作是使用该对象中包含的所有信息来创建要发送回客户端 Web 浏览器的文本流。
\nServlet 容器的全部意义在于使编写 Servlet 的程序员不再需要了解 HTTP 的大量细节以及如何创建服务器。Servlet 容器完成所有这些工作。换句话说,Servlet 技术的伟大之处在于,作为程序员的您不需要问这个#2 问题!
\n(a) 两者都有,(b) 没有。
\n不,Servlet 容器和 Web 服务器是两种不同类型的软件。
\nWeb 服务器处理:
\nWeb 服务器处理所有网络流量。
\nServlet 容器提供了一个环境,其中相对较小的代码块(servlet)可以处理请求并制定响应。小型 Servlet 不必处理网络流量、启动和关闭、安全性以及完整服务器的所有其他职责。这就解释了“Servlet”中的“-let”。
\n您编写的 Servlet 会插入 Servlet 容器中。容器与 Web 服务器通信,接收 Web 服务器传递的每个请求,并将 Servlet 生成的响应传递给 Web 服务器。当请求到达时,容器会调用您的 servlet。
\n只要您的 Servlet 符合Jakarta Servlet规范,您的 Servlet 仍然完全不知道正在运行什么特定的 Servlet 容器实现。而您的 servlet 仍然对 Web 服务器的存在一无所知。
\n有些产品,例如 Tomcat 和 Jetty,可以由Web服务器和 Servlet 容器组成。
\nTomcat 主要由三个组件组成:(1) Catalina,servlet 容器;(2) Coyote,Web 服务器;(3) Jasper,Jakarta Server Pages 处理器。请参阅维基百科。
\n对于大多数人的需求, Tomcat 中的Coyote Web 服务器是一个合适的 Web 服务器。因此,您可以使用 Tomcat 作为一体化应用程序服务器,处理 Web 流量和 servlet。
\n[web request] \xe2\x9e\x9c [Tomcat Coyote] \xe2\x9e\x9c [Tomcat Catalina] \xe2\x9e\x9c [your servlet]\nRun Code Online (Sandbox Code Playgroud)\n或者,有些人选择仅使用 Tomcat 作为 Servlet 容器,位于单独的 Web 服务器(例如Apache HTTP Server)后面。在这种情况下,Tomcat\xe2\x80\x99s Coyote组件将不被使用。相反,单独的 Web 服务器处理客户端浏览器组件并处理传入的请求。如果请求请求静态资源,Web 服务器将提供该资源,而无需 Tomcat 的任何参与。如果请求正在请求已分配给 servlet 的工作,则单独的 Web 服务器会将请求传递给 Tomcat 及其Catalina组件。Servlet 生成响应后,响应从 Tomcat 移回到外部 Web 服务器,外部 Web 服务器将响应转发到客户端 Web 浏览器。
\n[web request] \xe2\x9e\x9c [Apache HTTP Server] \xe2\x9e\x9c [Tomcat Catalina] \xe2\x9e\x9c [your servlet]\nRun Code Online (Sandbox Code Playgroud)\n非嵌入式是典型的情况,正如 Servlet 技术首次发明时最初设想的那样。
\n那时,服务器很少、价格昂贵,而且已经永久存在。Servlet 技术的目标是通过让许多 Web 应用程序并行运行,使公司能够轻松地让那些昂贵的服务器保持忙碌。
\nServlet 技术允许许多不同的 Servlet 在一台机器上运行,而不会互相干扰,并且每个 Servlet 的程序员都不知道正在编写的其他 Servlet。当部署和取消部署 Servlet 时,Servlet 容器可以保持正常运行。
\n很快,我们就拥有了云技术,其中服务器数量众多、价格低廉,并且可以方便地即时创建和销毁。因此,现在许多人希望单独运行他们的 Web 应用程序,每个虚拟机或虚拟服务一个 Web 应用程序。因此需要嵌入模式。我们需要一个可以自行启动和关闭的应用程序,以运行一个特定的 servlet(或多个协同工作的 servlet),而无需任何其他不相关的 Web 应用程序。
\n实现这一新目标的一种方法是将 Web 服务器和 servlet 容器打包到独立的 Java 应用程序中。系统管理员可以像任何其他 Java 应用程序一样启动和退出这个独立应用程序,而无需了解如何配置正在进行的 Web 服务器和 Servlet 容器。
\n| 归档时间: |
|
| 查看次数: |
571 次 |
| 最近记录: |