Java 应用程序可以在服务器上运行,但是不管是在客户机-服务器环境下,还是在基于 Web 的环境下,JDK 中都没有提供让 Java 应用程序专用于服务器机器的接口或包。熟悉到 Java 在 Web 环境下作为一种服务器语言的潜力,Sun Microsystems 编写了 Java Servlet 规范。servlet 在许多方面与 applet 相似,它是专门为在 Web 服务器机器上运行而设计的 Java 程序:
“servlet 是由容器治理的 Web 组件,可产生动态内容。servlet 是一种小型的、与平台无关的 Java 类,被编译成体系结构中立的字节代码,这种代码可以动态地加载到一个 web 服务器上,并由此 web 服务器运行。servlet 通过一种由 servlet 容器实现的请求-响应模型与 Web 客户机进行交互。这种请求-响应模型建立在超文本传输协议 (HTTP) 行为的基础之上。”(见 JavaSoft 的“Java Servlet API Specification”)
在一台 Web 服务器控制下,在多台服务器上运行若干小型用户程序,这种想法并不新鲜 — 一段时间以来,公共网关接口 (CGI) 程序(常被称为 CGI 脚本)一直起着这种作用,并推动了 Web 的普及。但 Java servlet 可以以更高的效率和可移植性来实现这一目的,因而可望最终会取代 CGI 程序。为 servlet 提供运行时环境的软件(通常被称为 servlet 引擎)可以添加到现有的、本身并不支持 Java 可执行程序的 Web 服务器上。
Java servlet 的出现,为应用程序员使用 Java 来创建 Web 应用程序开辟了新的途径。但是,仅有 servlet 还不能为真正的企业计算提供完整的模型。CGI 应用程序本身往往不是完整的应用程序,在处理接收自 Web 浏览器上用户的信息请求时,CGI 只是整个处理过程中的一个中间步骤。例如,CGI 应用程序的一种常见用途是访问数据库。将它用于这种任务时,CGI 程序提供一种方法,将用户的数据请求连接到能满足这种请求的企业数据库。CGI 程序经常充当一种中间软件,从 Web 浏览器接收请求,决定必须调用哪些计算资源来满足这些请求,并向浏览器发回响应。Java servlet 与 CGI 程序一样,最适合充当连接前端 Web 请求与后端数据资源的中间层组件。进入讨论组讨论。