【问题标题】:Difference between Tomcat and my JSP/Servlet app?Tomcat 和我的 JSP/Servlet 应用程序之间的区别?
【发布时间】:2018-11-24 02:47:16
【问题描述】:

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

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

服务器到底是谁? Tomcat是服务器吗?还是我的 Servlet/JSP 应用程序是服务器?我知道我的 JSP/Servlet 应用程序将响应发送回客户端,然后我认为它是服务器……而 Tomcat 是谁,它到底是做什么的?

提前致谢!

【问题讨论】:

    标签: java jsp tomcat servlets


    【解决方案1】:

    服务器是一个在调用时提供响应的程序。 Tomcat 是一个服务器,它侦听 http 请求,将它们路由到负责的应用程序,然后当应用程序处理完响应后,服务器将其发送回客户端。

    Tomcat 被称为 servlet 容器,因为它提供了一个 servlet 可以运行的地方;它提供了应用程序完成工作所需的基础设施。它侦听特定套接字上的请求并处理与客户端通信所需的 I/O。 Web 应用程序实现指定的接口,以便 servlet 容器可以知道调用它们。 Web 应用程序通常将 servlet 作为其使用的任何 Web 框架的一部分,其中 servlet 将请求分派给处理请求的控制器对象。必须为任何事情编写自己的 servlet 应该很少见。

    JSP 是一种用于创建已过时多年的视图的遗留技术。

    【讨论】:

    • 感谢您的回复!你能推荐我一种创建视图的新技术吗?
    【解决方案2】:

    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 应用程序)。在这种情况下,您不必担心它是如何工作的,只需将磁盘放入播放器中,然后让它处理其余的事情。

    【讨论】:

      【解决方案3】:

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

      • the (web) server 通过 HTTP 协议处理传入的网络请求。 Httpd Apache、IIS 和 nginx 是 Web 服务器。
      • the application server 是一个软件框架,它提供了创建 Web 应用程序的工具和运行它们的服务器环境。

      关于Servlet/JSP,它们既不是服务器也不是网络应用程序。这些是 Web 应用程序的基本部分(WAR 文件或目录中的分解 WAR)。

      Web 应用程序(Java 中的 WAR)部署在应用服务器(Java 中的 Servlet 容器)上。 Tomcat 和 Jetty 代表了这种服务器。 这些服务器通常出于多种原因依赖 Web 服务器:提供 HTTP 静态资源(图像、css、js...)、代理优势、SSL 等等...

      这是请求及其响应如何通过不同节点传输的架构(括号中的数字表示序列中的顺序):

      网页浏览器 |网络服务器 |雄猫 |以网络应用为目标 http请求:req (1) -> req (2) -> req (3) -> req (4) http响应:res (8)

      请注意,在本地环境中,您可能没有使用 tomcat 配置的 Web 服务器。因此,您可以将此节点视为架构中的可选节点。

      附带说明一下,在 Java 世界中,您还拥有真正不同的 Java EE 服务器。他们必须实施 JEE 服务器标准。 JBoss、Glassfish 或 Weblogic 就是其中的示例。
      这些是 Servlet Container 的替代品,但越来越少地使用较重。

      【讨论】:

        【解决方案4】:

        一个servlet-container只支持servlet API(包括JSP、JSTL)。

        应用服务器支持整个JavaEE - EJB、JMS、CDI、JTA、servlet API(包括JSP、JSTL)等。

        可以在 servlet 容器上运行大多数 JavaEE 技术,但您必须安装特定技术的独立实现。

        【讨论】:

          猜你喜欢
          • 2012-11-28
          • 1970-01-01
          • 2012-07-05
          • 1970-01-01
          • 2012-01-19
          • 1970-01-01
          • 2023-03-27
          • 1970-01-01
          • 2016-10-18
          相关资源
          最近更新 更多