Servlet 3.1规范(一)
什么是 Servlet
servlet 是基于 JAVA 的 WEB 组件,由容器进行管理,来生成动态内容。像其他基于 JAVA 的组件技术一样,servlet 也是基于平台无关的 JAVA 类格式,被编译为平台无关的字节码,可以被基于 JAVA 技术的 WEB 服务器动态加载并运行。
容器(Container),有时候也叫做 servlet 引擎,是 WEB 服务器为支持 servlet 功能扩展的部分。客户端通过 servlet 容器实现的 request/response paradigm(请求/应答模式)与 Servlet 进行交互
什么是 Servlet 容器
Servlet Container(Servlet 容器)是 WEB 服务器或者应用服务器的一部分,用于提供基于请求/响应发送模式的网络服务,解码基于 MIME 的请求,并且格式化基于 MIME 的响应。Servlet 容器同时也包含和管理他们的生命周期里的 Servlet。
Servlet 容器可以嵌入到宿主的 WEB 服务器中,或者通过 WEB 服务器的本地扩展 API 单独作为附加组件安装。Servlet 容器也可能内嵌或安装到启用 WEB 功能的应用服务器中。
所有的 Servlet 容器必须支持 HTTP 协议用于请求和响应,对HTTPS 的支持是可选的。容器必须支持 HTTP/1.0 和 HTTP/1.1。因为容器或许支持 RFC2616(HTTP/1.1)描述的缓存机制,缓存机制可能在将客户端请求交给 Servlet 处理之前修改他们,也可能在将 Servlet 生成的响应发送给客户端之前修改它们,或者可能根据 RFC2616 规范直接对请求作出响应而不交给 Servelt 进行处理。
Servlet 容器应该使 Servlet 执行在一个安全限制的环境中,在 JAVA 平台标准版(J2SE,v.1.3或更高)或者 JAVA 平台企业版(JAVA EE,v.1.3或更高)的环境下,这些限制应该被放置在 JAVA 平台定义的安全许可架构中。比如,高端的应用服务器为了保证容器的其他组件不受到负面影响可能会限制 Thread 对象的创建
JAVA SE 7是构建 Servlet 容器最低的 JAVA 平台版本
Servlet 与其他技术的对比
从功能上看,servlet 位于 Common Gateway Interface(公共网关接口,简称 CGI)程序和私有的服务器扩展如 Netscape Server API(NSAPI)或 Apache Modules 这两者之间。
相对与其他服务器扩展机制,Servlet 有如下优势:
- 它们通常比 CGI 脚本更快,因为采用不同的处理模式
- 它们采用标准的 API 从而支持更多的 WEB 服务器
- 它们拥有 JAVA 编程语言的所有优势,包括容易开发和平台无关
- 他们可以访问 JAVA 平台提供的大量的 API
与 JAVA EE 的关系
Java Servlet API 3.1 版本是 Java EE 7 版本必须的 API。Servlet 容器和 servlet 被部署到平台中时,为了能在 JAVA EE 环境中执行,必须满足 JAVAEE 规范中描述的额外的一些要求