Tomcat和我的JSP / Servlet应用程序之间的区别?

时间:2018-06-14 10:40:02

标签: java jsp tomcat servlets

我正在学习JSP和Servlet,而且我是初学者。我试着理解服务器,应用服务器,Tomcat和我的Servlet应用程序之间的区别。

例如,我在教程中找到了这些信息:" Web浏览器可能是客户端,托管网站的计算机上的应用程序可能是服务器。客户端(浏览器)向服务器提交HTTP请求;然后服务器向客户端返回响应。"

究竟是谁的服务器? Tomcat是服务器吗?或者我的Servlet / JSP应用程序是服务器?我知道我的JSP / Servlet应用程序将响应发送回客户端,然后我知道它是服务器......谁是Tomcat以及它究竟做了什么?

提前致谢!

4 个答案:

答案 0 :(得分:2)

在现实世界中,服务器(也称为Web服务器)和应用程序服务器是两个截然不同的东西,但它们协同工作:

  • the (web) server通过HTTP协议处理传入的网络请求。 Httpd Apache,IIS和nginx是Web服务器。
  • the application server是一个软件框架,它提供了创建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应用程序)。在这种情况下,您不必担心它是如何工作的,只需将磁盘放入播放器中,然后让它完成剩下的工作。