JSP - 架构



Web 服务器需要一个 JSP 引擎,即一个容器来处理 JSP 页面。JSP 容器负责拦截对 JSP 页面的请求。本教程使用 Apache,它内置了 JSP 容器来支持 JSP 页面的开发。

JSP 容器与 Web 服务器协同工作,为 JSP 提供运行时环境和其他服务。它知道如何理解 JSP 中的特殊元素。

下图显示了 JSP 容器和 JSP 文件在 Web 应用程序中的位置。

JSP Architecture

JSP 处理过程

以下步骤说明了 Web 服务器如何使用 JSP 创建网页:

  • 与普通页面一样,您的浏览器向 Web 服务器发送 HTTP 请求。

  • Web 服务器识别出 HTTP 请求是针对 JSP 页面的,并将其转发到 JSP 引擎。这是通过使用 URL 或以.jsp结尾的 JSP 页面而不是.html来完成的。

  • JSP 引擎从磁盘加载 JSP 页面并将其转换为 Servlet 内容。这种转换非常简单,其中所有模板文本都转换为 println( ) 语句,所有 JSP 元素都转换为 Java 代码。此代码实现了页面的相应动态行为。

  • JSP 引擎将 Servlet 编译成可执行类,并将原始请求转发到 Servlet 引擎。

  • Web 服务器的一部分称为 Servlet 引擎加载 Servlet 类并执行它。在执行过程中,Servlet 生成 HTML 格式的输出。该输出由 Servlet 引擎在 HTTP 响应中进一步传递给 Web 服务器。

  • Web 服务器以静态 HTML 内容的形式将 HTTP 响应转发到您的浏览器。

  • 最后,Web 浏览器处理 HTTP 响应中的动态生成的 HTML 页面,就像处理静态页面一样。

所有上述步骤都可以在下图中看到:

JSP Processing

通常,JSP 引擎会检查 JSP 文件的 Servlet 是否已存在,以及 JSP 的修改日期是否早于 Servlet。如果 JSP 比其生成的 Servlet 旧,则 JSP 容器假定 JSP 未更改,并且生成的 Servlet 仍然与 JSP 的内容匹配。这使得该过程比其他脚本语言(如 PHP)更有效,因此速度更快。

因此,从某种意义上说,JSP 页面实际上只是另一种编写 Servlet 的方式,而无需成为 Java 编程高手。除了转换阶段外,JSP 页面的处理方式与普通 Servlet 完全相同。

广告