📜  Java Servlet 简介

📅  最后修改于: 2022-05-13 01:55:48.839000             🧑  作者: Mango

Java Servlet 简介

今天,我们都意识到创建动态网页的需求,即能够根据时间更改站点内容或能够根据客户端收到的请求生成内容的网页。如果你喜欢用Java编码,那么你会很高兴知道使用Java还存在一种生成动态网页的方法,那就是Java Servlet。但在我们继续我们的主题之前,让我们首先了解对服务器端扩展的需求。

Servlet 是在支持Java的 Web 服务器或应用程序服务器上运行的 Java 程序。它们用于处理从网络服务器获得的请求,处理请求,产生响应,然后将响应发送回网络服务器。

Servlet 的属性如下:

  • Servlet 在服务器端工作。
  • Servlet 能够处理从网络服务器获得的复杂请求。

可以从图像本身描述 Servlet 架构,如下所示:

Servlet的执行基本上 包括六个基本步骤:

  1. 客户端将请求发送到 Web 服务器。
  2. Web 服务器接收请求。
  3. Web 服务器将请求传递给相应的 servlet。
  4. servlet 处理请求并以输出的形式生成响应。
  5. servlet 将响应发送回网络服务器。
  6. Web 服务器将响应发送回客户端,客户端浏览器将其显示在屏幕上。

现在让我们来讨论一下为什么我们需要 For Server-Side 扩展的古怪点?

服务器端扩展只不过是用于创建动态网页的技术。实际上,为了提供动态网页的功能,网页需要一个容器或Web服务器。为了满足这一要求,独立的 Web 服务器提供商以API (应用程序编程接口)的形式提供了一些专有的解决方案。
这些API允许我们构建可以在 Web 服务器上运行的程序。在这种情况下, Java Servlet也是Java Platform Enterprise Edition的组件 API 之一,它为在Java中创建动态 Web 应用程序设定了标准。

在了解某事之前,了解对某事的需求很重要,但这并不是唯一可用于创建动态网页的技术。 Servlet 技术类似于其他 Web 服务器扩展,例如通用网关接口(CGI) 脚本和超文本预处理器(PHP)。然而, Java Servlet 更容易被接受,因为它们解决了CGI的局限性,例如低性能和低程度的可伸缩性。

什么是 CGI?

CGI实际上是一个使用任何编程语言(如CC++ )编写的外部应用程序,它负责处理客户端请求并生成动态内容。
在 CGI 应用程序中,当客户端请求访问动态网页时,Web 服务器执行以下操作:

  • 它首先使用 URL 定位请求的网页,所需的 CGI 应用程序。
  • 然后它创建一个新进程来服务客户端的请求。
  • 在进程中调用 CGI 应用程序并将请求信息传递给应用程序。
  • 从 CGI 应用程序收集响应。
  • 销毁进程,准备 HTTP 响应,并将其发送给客户端。

因此,在CGI服务器中,必须为每个请求创建和销毁进程。很容易理解,这种方法适用于处理少量客户端,但是随着客户端数量的增加,服务器上的工作量增加,因此处理请求所花费的时间增加。

Servlet 和 CGI 的区别

ServletCGI(Common Gateway Interface)
Servlets are portable and efficient.CGI is not portable
In Servlets, sharing data is possible.In CGI, sharing data is not possible.
Servlets can directly communicate with the webserver.CGI cannot directly communicate with the webserver.
Servlets are less expensive than CGI.CGI is more expensive than Servlets.
Servlets can handle the cookies.CGI cannot handle the cookies.

Servlet API 的:
Servlet 由两个包构建:

  • javax.servlet(基本)
  • javax.servlet.http(高级)

这些包中存在的各种类和接口是:

ComponentTypePackage
ServletInterfacejavax.servlet.*
ServletRequestInterfacejavax.servlet.*
ServletResponseInterfacejavax.servlet.*
GenericServletClassjavax.servlet.*
HttpServletClassjavax.servlet.http.*
HttpServletRequestInterfacejavax.servlet.http.*
HttpServletResponseInterfacejavax.servlet.http.*
FilterInterfacejavax.servlet.*
ServletConfigInterfacejavax.servlet.*

Java Servlet 的优点

  • Servlet 比 CGI更快,因为它不涉及为收到的每个新请求创建新进程。
  • 用Java编写的 Servlet 与平台无关。
  • 由于 Servlet 不在单独的进程中运行,因此消除了为每个请求创建新进程的开销。只有一个实例同时处理所有请求。这也节省了内存并允许 Servlet 轻松管理客户端状态。
  • 它是一个服务器端组件,因此 Servlet 继承了 Web 服务器提供的安全性
  • 为Java Servlet 设计的API自动获得了Java平台的优势,如平台无关和可移植性。此外,它显然可以使用在Java平台(如JDBC )上创建的各种 API 来访问数据库。

Servlet 容器

Servlet 容器,也称为Servlet 引擎,是一组集成的对象,为Java Servlet 组件提供运行时环境。

简而言之,它是一个在 Web 服务器之上管理Java Servlet 组件以处理 Web 客户端请求的系统。

Servlet 容器提供的服务:

  • 网络服务:加载一个 Servlet 类。加载可能来自本地文件系统、远程文件系统或其他网络服务。 Servlet 容器提供发送请求和响应的网络服务。
  • 基于 MIME 的消息解码和编码:提供基于 MIME 的消息的解码和编码服务。
  • 管理 Servlet 容器:管理 Servlet 的生命周期。
  • 资源管理管理静态和动态资源,例如 HTML 文件、Servlet 和 JSP 页面。
  • 安全服务:处理资源访问的授权和认证。
  • 会话管理:通过将会话ID附加到 URL 路径来维护会话。

共同作者: Kartik Thakral