Servlet规范v2.2 翻译 (2)

 

1.   概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.1. 什么是Servlet

Servlet是受容器管理的web组件,它能动态地生成内容。Servlet是一段小程序,被编译成平台无关、架构中立的的字节码之后,可以被Web服务器器动态地加载和运行。Servlet通过容器实现的请求-相应(request-response)方式与Web浏览器进行交互,这种请求-相应模式是基于超文本传输协议(HTTP)的。

1.2. 什么是Servlet容器

Servlet容器和Web服务器或者应用服务器一起提供网络服务,能解析MIME编码的请求,能生成MIME编码格式的相应。容器还负责容纳servlet,并对其生命周期进行管理。

Servlet容器可以内置在Web服务器中,也可以通过web服务器的扩展API作为附加组件安装。Servlet容器同样可以作为具体Web服务功能的应用服务器的内置模块或者附加组件。

所有的Servlet容器必须支持HTTP协议,并可以支持其他基于请求-相应模式的协议,例如HTTPSServlet容器至少需要支持HTTP 1.0版本,并强烈建议同时支持HTTP 1.1版本。

Servlet容易可以对servlet的运行环境设置安全限制。在J2SE1.2或者J2EE 1.2环境下,这些限制条件应当使用Java2平台所提供的授权框架来实现。例如,high end application servers 会限制某些操作,例如创建Thread对象,来保证容器的其他组件不会收到负面影响。

 

1.3. 一个例子

客户端程序,如Web浏览器,使用HTTP请求来访问Web服务器。请求首先被Web服务器处理,并被转交给Servlet容器。Servlet根据内部配置决定调用哪一个servlet,并在调用时将代表requestresponse的对象传递给它。Servlet容器可以与Web服务器运行在同一个进程中,同一个主机的不同进程中,或者运行在不同的主机中。

Servlet通过request对象知道谁是远程对象,哪些HTML表单参数作为request的一部分被发送,以及其他相关的数据。Servlet可以执行程序设定的各种逻辑,生成发还给客户端的数据,并通过response对象将这些数据发还给客户端。

一旦servlet完成对request的处理,servlet容器需要保证response内容被正确刷新,并将控制返还给Web服务器。

 

1.4. Servlet和其他技术的比较

从功能性的角度,Servlet介于CGI程序和私有服务器扩展(例如Netscape服务器APINSAPIApache模块)之间。

相对于其他的服务器扩展机制,Servlet具备如下优点:

l         由于使用了不同的进程模型,其速度远远超过CGI脚本

l         使用标准API,这些API得到大量Web服务器的支持

l         拥有Java编程预言的所有有点,包括易于开发,平台无关性

l         可以使用Java平台所提供的大量API

1.5. ServletJ2EE的关系

Servlet APIJava 2 平台企业版 1.2版本所需要的APIJ2EE规范描述了对servletservlet容易的附加要求。Servlet应当被部署到容器中,而容器和servlet则都运行在J2EE环境中。

1.6. 可分布的Servlet容器

在这个版本的规范中,增加了一个特性:将一个Web应用标记为可分布。这个标记允许servlet容器提供商将一个Web应用的servlet部署在多个Java虚拟机中,而这些虚拟机可以运行在同一台主机上,也可以运行在不同的主机上。一个被标记为可分布的应用必须遵循一些限制条件,使得支持分布式应用的容器能实现集群、失效转移等特性。

高性能的环境支持可扩展性、集群、失效转移(J2EE兼容)。所有需要在高性能的环境下运行的Web应用,应当设计实现成为可发布的Web应用,这使得应用可以最大程度地利用服务器所提供的特性。如果一个不可分布的应用部署在这样一个服务器上,则不能充分利用服务器提供的特性。

 

1.7. 2.1版本之后的变动

2.1版正式发布之后,对本规范的主要变动如下:

l         Web应用的概念的介绍

l         web application archive files的介绍

l         Response buffering(响应缓存)的介绍

l         可分布servlet的介绍

l         增加通过名称获取RequestDispatcher的功能

l         增加通过相对路径获取RequestDispatcher的功能

l         改进国际化

l         对于分布式servlet引擎语义的一些澄清

API做了如下变动:

l         ServletConfig接口添加了getServletName方法,用于获取在系统中表示本servlet的名称

l         ServletContext接口添加getInitParametergetInitParameterNames这两个方法,使初始化参数能在应用层面被设置,并被改应用的所有servlet所共享

l         ServletRequest接口添加getLocale方法,帮助决定客户端当前在哪个locale

l         ServletRequest接口添加isSecure方法,用于标识request是否通过安全的方式进行传输,例如使用HTTPS协议

l         修改了UnavailableException类的构造函数。因为现有的构造器方面参数签名容易被开发人员混淆。修改之后的构造器使用了更简单的参数签名。

l         HttpServletRequest接口添加getHeaders方法,用于获取在request中,所有用某个名称标识的头信息

l         HttpServletRequest添加isUserInRolegetUserPrinciple两个方法,使servlet可以使用基于抽象角色的认证

l         HttpServletResponse接口添加addHeaderaddIntHeaderaddDateHeader三个方法,允许使用同一个名字,创建多个头信息

l         HttpSession接口添加getAttributegetAttributeNamessetAttributeremoveAttribute四个方法,以改进API的命名规范,相应地,getValue,getValueNames,setValueremoveValue这四个方法被废弃。

此外,还增加了大量概念的说明和澄清。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章