我正在学习JSP和Servlet,而且我是初学者。我试着理解服务器,应用服务器,Tomcat和我的Servlet应用程序之间的区别。
例如,我在教程中找到了这些信息:" Web浏览器可能是客户端,托管网站的计算机上的应用程序可能是服务器。客户端(浏览器)向服务器提交HTTP请求;然后服务器向客户端返回响应。"
究竟是谁的服务器? Tomcat是服务器吗?或者我的Servlet / JSP应用程序是服务器?我知道我的JSP / Servlet应用程序将响应发送回客户端,然后我知道它是服务器......谁是Tomcat以及它究竟做了什么?
提前致谢!
答案 0 :(得分:2)
在现实世界中,服务器(也称为Web服务器)和应用程序服务器是两个截然不同的东西,但它们协同工作:
关于Servlet/JSP
,这些既不是服务器也不是Web应用程序。这些是Web应用程序的基本部分(WAR文件或目录中的爆炸WAR)。
Web应用程序(Java中的WAR)部署在应用程序服务器上(Java中的Servlet容器)。 Tomcat和Jetty代表了这种服务器。 这些服务器通常依赖于Web服务器,原因有多种:为...提供HTTP静态资源(图像,css,js ...),代理权益,SSL等......
以下是请求及其响应如何通过不同节点传输的模式(括号内的数字表示序列中的顺序):
Web browser | Web server | Tomcat | web app targeted http request : req (1) -> req (2) -> req (3) -> req (4) http response : res (8) <- res (7) <- res (6) <- res (5)
请注意,在本地环境中,您可能没有配置tomcat的Web服务器。因此,您可以将此节点视为架构中的可选节点。
作为旁注,在Java世界中,您还有Java EE服务器,这是另一回事。他们必须实现JEE服务器标准。 JBoss,Glassfish或Weblogic就是它们的例子 这些是Servlet容器的替代品,但越来越少用作较重的。
答案 1 :(得分:2)
服务器是一个在调用时提供响应的程序。 Tomcat是一个服务器,它侦听http请求,将它们路由到负责的应用程序,然后当应用程序处理完响应时,服务器将其发送回客户端。
Tomcat被称为servlet容器,因为它提供了servlet可以运行的位置;它提供了应用程序为完成工作所需的基础结构。它侦听特定套接字上的请求,并处理与客户端通信所需的I / O. Web应用程序实现指定的接口,以便servlet容器可以知道调用它们。 Web应用程序通常将servlet作为其使用的任何Web框架的一部分,其中servlet将请求分派给处理请求的控制器对象。为任何事情编写自己的servlet应该是很少见的。
JSP是一种用于创建多年已过时的视图的传统技术。
答案 2 :(得分:1)
servlet-container 仅支持servlet API(包括JSP,JSTL)。
应用程序服务器支持整个JavaEE - EJB,JMS,CDI,JTA,servlet API(包括JSP,JSTL)等。
可以在servlet容器上运行大多数JavaEE技术,但是必须安装特定技术的独立实现。
答案 3 :(得分:1)
Tomcat基本上是 servlet容器和 Web服务器(因为它能够使用其内部Coyote HTTP服务器处理HTTP请求)。
这意味着它管理你的servlet,JSF和JSP(后者也隐式转换为servlet)。它实现了Java Servlet API,但也可以用作HTTP服务器来处理对静态WEB页面的调用。
通过在Tomcat上部署servlet,您可以将它们放在容器中,然后容器将管理其功能的所有边缘,包括生命周期。在您的问题中,Tomcat和您的应用程序都可以被视为“服务器”。
Tomcat还用作JBoss和GlassFish应用程序服务器中的引用servlet容器。
真实情况可能会让它更清晰:
你买了一张DVD并想看它。 DVD(一个servlet)本身不能用于直接观看电影(它没有显示器,扬声器或其他什么,它只是一个数据载体)。因此,您需要一个合适的DVD播放器(就我们的上下文而言是一个容器)来播放它。您将DVD插入播放器(部署servlet)并观看电影(使用Web应用程序)。在这种情况下,您不必担心它是如何工作的,只需将磁盘放入播放器中,然后让它完成剩下的工作。