文章是对 JSR-000340 JavaTM Servlet 3.1 Final Release的Java™ Servlet规范的翻译,尚未校准
Servlet是一个基于Java™技术的Web组件,由一个容器管理,可以生成动态内容。
像其他基于Java技术的组件一样,servlet是独立于平台的Java类,被编译成平台中立的字节码,可以动态加载到支持Java技术的Web服务器中并运行。
容器,有时被称为Servlet引擎,是提供Servlet功能的Web服务器扩展。Servlet通过Servlet容器实现的请求/响应模式与Web客户端进行交互。
servlet容器是Web服务器或应用服务器的一部分,它提供发送请求和响应的网络服务,对基于MIME的请求进行解码,并格式化基于MIME的响应。一个servlet容器还包含并在其生命周期中管理小程序。
一个Servlet容器可以被内置到主机Web服务器中,也可以通过该服务器的本地扩展API作为Web服务器的附加组件来安装。Servlet容器也可以内置于或可能安装在支持Web的应用服务器中。
所有的servlet容器必须支持HTTP作为请求和响应的协议,但也可以支持其他基于请求/响应的协议,如HTTPS(HTTP over SSL)。容器必须实现的HTTP规范的必要版本是HTTP/1.0和HTTP/1.1。因为容器可能有RFC2616(HTTP/1.1)中描述的缓存机制,它可以在将客户端的请求传递给servlet之前修改这些请求,可以在将servlet产生的响应发送给客户端之前修改这些响应,也可以在符合RFC2616的情况下响应请求而不将其传递给servlet。
一个 servlet 容器可以对 servlet 执行的环境设置安全限制。在 Java Platform, Standard Edition (J2SE, v.1.3 or above) 或 Java Platform, Enterprise Edition (Java EE, v.1.3 or above) 环境中,这些限制应该使用 Java Platform 定义的权限体系。例如,高端应用服务器可以限制线程对象的创建,以确保容器的其他组件不会受到负面影响。Java SE 7是底层Java平台的最低版本,Servlet容器必须用它来构建。
以下是一个典型的事件顺序。
在功能上,servlets介于通用网关接口(CGI)和专有服务器扩展(如Netscape服务器API)之间。程序和专有的服务器扩展,如Netscape Server API (NSAPI)或Apache模块。
与其他服务器扩展机制相比,Servlet具有以下优势:
Java Servlet API v.3.1是Java Platform, Enterprise Edition的一个必要API。 Java Servlet API v.3.1是Java平台企业版的必备API,Servlet容器和部署在其中的Servlet必须满足Java EE规范中描述的额外要求,才能在Java EE环境中执行。
在Servlet 2.5中,元数据完整只影响部署时对注解的扫描。web-fragments(web片段)的概念在servlet 2.5中并不存在。然而,在servlet 3.0及以后的版本中,元数据完整性会影响对所有在部署时指定部署信息和web-fragments的注释的扫描。
描述符的版本必须不影响你在网络应用中扫描哪些注解。一个特定版本的规范的实现必须扫描该配置中支持的所有注解,除非指定了元数据完整。