20200311 1. 概览

1. 概览

1.1 什么是 Servlet?

Servlet 是基于 Java 技术的 web 组件,容器托管的,用于生成动态内容。像其他基于 Java 的组件技术一样,
Servlet 也是基于平台无关的 Java 类格式,被编译为平台无关的字节码,可以被基于 Java 技术的 web server
动态加载并运行。容器,有时候也叫做 servlet 引擎,是 web server 为支持 servlet 功能扩展的部分。客户端
通过 Servlet 容器实现的请求/应答模型与 Servlet 交互。

1.2 什么是 Servlet 容器?

Servlet 容器是 web server 或 application server 的一部分,提供基于请求/响应发送模型的网络服务,解码基于 MIME 的请求,并且格式化基于 MIME 的响应。 Servlet 容器也包含了管理 Servlet 生命周期。

Servlet 容器可以嵌入到宿主的 web server 中,或者通过 Web Server 的本地扩展 API 单独作为附加组件安装。
Servelt 容器也可能内嵌或安装到包含 web 功能的 application server 中。

所有 Servlet 容器必须支持基于 HTTP 协议的请求/响应模型,比如像基于 HTTPS( HTTP over SSL)协议的
请求/应答模型可以选择性的支持。容器必须实现的 HTTP 协议版本包含 HTTP/1.0 和 HTTP/1.1。因为容器
或许支持 RFC2616 (HTTP/1.1)描述的缓存机制,缓存机制可能在将客户端请求交给 Servlet 处理之前修改它
们,也可能在将 Servlet 生成的响应发送给客户端之前修改它们,或者可能根据 RFC2616 规范直接对请求
作出响应而不交给 Servlet 进行处理。

Servlet 容器应该使 Servlet 执行在一个安全限制的环境中。在 Java 平台标准版( J2SE, v.1.3 或更高) 或者
Java 平台企业版(Java EE, v.1.3 或更高) 的环境下,这些限制应该被放置在 Java 平台定义的安全许可架构
中。比如,高端的 application server 为了保证容器的其他组件不受到负面影响可能会限制 Thread 对象的创
建。

Java SE 6 是构建 Servlet 容器最低的 Java 平台版本。

1.5 与 Java 平台企业版的关系

Java Servlet API 3.1 版本是 Java 平台企业版 7 版本http://java.sun.com/javaee/)必须的 API。 Servlet 容器和 servlet 被部署到平台中,为了能在 Java EE 环境中执行,必须满足 JavaEE 规范中描述的额外的一些要求。

1.6 与 Java Servlet 规范 2.5 版本间的兼容性

1.6.2 注解处理

在 servlet 2.5 中不存在 web-fragments 的概念,因此在 servlet2.5 中 metadata-complete 仅影响部署时的注解扫描。然而,在 servlet 3.0 和后来版本中,在运行时, metadata-complete 将影响扫描指定部署信息的所有注解和 web-fragments。在一个 web 应用程序中,描述符的版本不能影响你扫描哪些注解。规范的一个典型版本实现必须扫描配置中支持的所有注解,除非 metadata-complete 被指定。

原文地址:https://www.cnblogs.com/huangwenjie/p/12462468.html