1 概述

1.1 Servlet是什么?

Servlet是一项基于web组件,由容器管理,生成动态内容的Java技术。和其他基于组件的Java技术类似,servlet是些平台无关的Java类,被编译成平台无关的字节码,由支持Javaweb服务器动态加载并运行。容器,有时称为servlet引擎,是提供servlet功能的web服务器扩展。Servlet通过servlet容器实现的请求/响应形式来与web客户端交互。

 

1.2 Servlet容器是什么?

 

Servlet容器是web服务器或应用服务器的一部分,提供发送请求和响应的网络服务,对基于MIME的请求编码,并且格式化基于MIME的响应。Servlet容器还通过servlet的生命周期对它们容纳和管理。

 

Servlet可以构建于本地web服务器内,或者通过服务器的本地扩展API以附加组件形式安装到Web服务器。Servlet容器还可以构建于或者可能安装在支持web的应用服务器内。

 

所有servlet容器必须支持HTTP作为请求和响应的协议,但是基于HTTPSSSL上的HTTP)协议的附加请求/响应可以选择支持。容器必须实现的HTTP规范最低版本是HTTP/1.0。强烈建议容器同时要实现HTTP/1.1规范。

 

Servlet容器可以在servlet执行的环境中设置安全限制。在Java2平台,J2SE1.2或者J2EE1.3环境,这些限制应当使用Java2平台定义的许可体系来设置。比如,高端应用服务器可以限制Thread对象的创建,以确保容器的其他组件不会被拒绝嵌入。

 

J2SE1.2是构建servlet容器的底层Java平台的最低版本。

 

1.3 一个例子

下列是一个典型的事件序列:

 

1. 客户端(也就是web浏览器)访问web服务器,发出HTTP请求。

2. 请求由web服务器接收,转给servlet容器。Servlet容器可以和本地web服务器运行于相同的进程内,相同主机的不同进程,或者和处理请求的web服务器不同的主机。

3. Servlet容器根据servlet的配置决定调用哪一个servlet,然后使用表示请求和响应的对象来调用。

4. Servlet使用request对象来找出远程用户是谁,可能作为请求一部分发送的HTTP POST参数以及其他相关数据是什么。无论被编程为什么样的逻辑,都由servlet执行,然后生成数据发送回客户端。它通过response对象把数据发送回客户端。

5. 一旦servlet已经完成了请求处理,servlet容器确保响应被适当刷新,然后将控制返回给本地web服务器。

 

1.4 比较Servlet和其他技术

在功能方面,servlet介于CGICommon Gateway Interface)程序和专有服务器扩展比如NSAPINetscape Server API)或Apache模块之间。

 

Servlet相比其他服务器扩展机制有以下优点:

 

它们通常要比CGI脚本更快,因为使用一个不同的进程模块。

它们使用很多web服务器支持的标准API

它们具有Java编程语言的所有优点,包括容易开发和平台无关。

它们可以访问Java平台可用的大量的API

 

1.5 J2EE的关系

Servlet API 2.3J2EE1.31必需的API。部署它们的servlet容器和servlet必须满足J2EE规范中描述的其他需求,以在J2EE环境中执行。

 

1. 请参见J2EE规范(http://java.sun.com/j2ee/)。

 
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐