servlet3.1规范: 第1章 Servlet概览

15 篇文章 0 订阅

转载: servlet3.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 SE6是构建Servlet容器最低的Java平台版本。

1.3 例子

以下是一个典型的事件序列:
1、客户端(如 web浏览器)发送一个HTTP请求到web服务器;
2、Web服务器接收到请求并且交给servlet容器处理,servlet容器可以运行在与宿主web服务器同一个进程中,也可以是同一主机的不同进程,或者位于不同的主机的web服务器中,对请求进行处理。
3、servlet容器根据servlet配置选择相应的servlet,并使用代表请求和响应对象的参数进行调用。
4、servlet通过请求对象得到远程用户,HTTP POST参数和其他有关数据可能作为请求的一部分随请求一起发送过来。Servlet执行我们编写的任意的逻辑,然后动态产生响应内容发送回客户端。发送数据到客户端是通过响应对象完成的。
5、一旦servlet完成请求的处理,servlet容器必须确保响应正确的刷出,并且将控制权还给宿主Web服务器。

1.4 Servlet与其他技术的比较

从功能上看,servlet位于公共网关接口(CGI)程序和私有的server扩展如Netscape Server API(NSAPI)或Apache Modules这两者之间。

相对于其他server扩展机制Servlet有如下优势:

它们通常比CGI脚本更快,因为采用不同的处理模型。
它们采用标准的API从而支持更多的Web Server。
它们拥有Java编程语言的所有优势,包括容易开发和平台无关。
它们可以访问Java平台提供的大量的API。

1.5 与Java平台企业版的关系

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

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

1.6.1 监听器顺序

该规范之前发布的版本,监听器以随机顺序被调用。从Servlet3.0开始,监听器调用顺序定义在web.xml里,参考”web.xml 装配描述符,web- fragment .xml和注解”部分。

1.6.2注解处理

由于servlet2.5中不存在web-fragment的概念。所以在servlet2.5中,部署时metadata-complete仅影响注解扫描。然而,在servlet3.0中,部署时metadata-complete将影响所有注解和web-fragment的扫描。在一个web应用程序中,此版本的描述符必须不影响你扫描那些注解。规范的一个典型版本实现必须扫描配置中支持的所有注解,除非指定metadata-complete。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值