Servlet规范之预览

Posted 顧棟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet规范之预览相关的知识,希望对你有一定的参考价值。

文章是对 JSR-000340 JavaTM Servlet 3.1 Final Release的Java™ Servlet规范的翻译,尚未校准

Servlet3.1版本

文章目录

什么是Servlet

Servlet是一个基于Java™技术的Web组件,由一个容器管理,可以生成动态内容。

像其他基于Java技术的组件一样,servlet是独立于平台的Java类,被编译成平台中立的字节码,可以动态加载到支持Java技术的Web服务器中并运行。

容器,有时被称为Servlet引擎,是提供Servlet功能的Web服务器扩展。Servlet通过Servlet容器实现的请求/响应模式与Web客户端进行交互。

什么是Servlet容器

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容器必须用它来构建。

示例

以下是一个典型的事件顺序。

  1. 客户端(如网络浏览器)访问网络服务器并发出HTTP请求。
  2. 请求由Web服务器接收并交给servlet容器。 Servlet容器可以在与主机Web服务器相同的进程中运行。 在同一主机上的不同进程中,或在与Web服务器不同的主机上。它为之处理请求。
  3. servlet容器根据其servlets的配置来决定调用哪个servlet,并以代表请求和响应的对象来调用它。
  4. servlet使用请求对象来找出远程用户是谁,有哪些HTTP POST参数作为该请求的一部分被发送,以及其他相关的数据。servlet执行它被编程的任何逻辑,并生成数据发回给客户端。它通过响应对象将这些数据送回给客户端。
  5. 一旦servlet完成了对请求的处理,servlet容器就会确保响应被正确刷新,并将控制权返回给主机Web服务器。

将Servlets与其他技术进行比较

在功能上,servlets介于通用网关接口(CGI)和专有服务器扩展(如Netscape服务器API)之间。程序和专有的服务器扩展,如Netscape Server API (NSAPI)或Apache模块。

与其他服务器扩展机制相比,Servlet具有以下优势:

  • 它们通常比CGI脚本快得多,因为使用的是不同的进程模型。
  • 它们使用一个标准的API,被许多Web服务器所支持。
  • 它们具有Java编程语言的所有优点,包括易于开发和平台独立。
  • 它们可以访问Java平台上的大量API。

与Java平台企业版的关系

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环境中执行。

与Java Servlet规范2.5版兼容

处理注解

在Servlet 2.5中,元数据完整只影响部署时对注解的扫描。web-fragments(web片段)的概念在servlet 2.5中并不存在。然而,在servlet 3.0及以后的版本中,元数据完整性会影响对所有在部署时指定部署信息和web-fragments的注释的扫描。

描述符的版本必须不影响你在网络应用中扫描哪些注解。一个特定版本的规范的实现必须扫描该配置中支持的所有注解,除非指定了元数据完整。

以上是关于Servlet规范之预览的主要内容,如果未能解决你的问题,请参考以下文章

Servlet规范之Servlet Context

Servlet编程专题10之Servlet3.0注解

Servlet规范之安全

Servlet规范之应用生命周期事件

Servlet规范之转发请求

Servlet规范之The Request