Java Servlet API 3.0 提高应用可插入性(下)

日期: 2009-08-24 作者:Willam Brogden翻译:杨晓明 来源:TechTarget中国 英文

2.5版本保留的特性   尽管servlet可配置性已被大大扩展,但最基本,最简单的servlet生命周期没有改变。在处理任意请求前,servlet容器管理servlet类实例的创建并调用init()方法,这个方法具有servlet将运行于上下文的信息。Servlet容器负责创建代表一个请求或响应的对象,并调用service()方法。当servlet实例关闭的时候,destory()方法被调用,这样servlet使用的资源才能被正确地释放。

生命周期的简单性让曾经在桌面应用领域工作过的开发者在web环境下觉得更容易。   标注的角色   已经证明,Java标注在很多工程中起到简化应用部署的作用,……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

2.5版本保留的特性

  尽管servlet可配置性已被大大扩展,但最基本,最简单的servlet生命周期没有改变。在处理任意请求前,servlet容器管理servlet类实例的创建并调用init()方法,这个方法具有servlet将运行于上下文的信息。Servlet容器负责创建代表一个请求或响应的对象,并调用service()方法。当servlet实例关闭的时候,destory()方法被调用,这样servlet使用的资源才能被正确地释放。生命周期的简单性让曾经在桌面应用领域工作过的开发者在web环境下觉得更容易。

  标注的角色

  已经证明,Java标注在很多工程中起到简化应用部署的作用,比如Jersey工程。在Servlet 3.0 API中,javax.servlet.annotation 这个包中包含了6个标注类型,用在servlet,过滤器和监听器的声明中。下面按名称列出了这些标注类型和函数:

  HandlesTypes

  在服务器启动的初始化过程中,用ServletContainerInitializer定义了一个"类型"列表。使用这个列表来寻找servlet和过滤器类。

  MultipartConfig

  过去, 尽管有servlet API和使用各种工具的程序员,但这些不能直接支持文件上传。在servlet 3.0中, 支持multi-part/form-data POST请求,这个标注还提供了控制请求的信息。比如,你能够规定所接受文件的最大长度。

  WebFilter

  在请求传给servlet前,一个servlet过滤器对象控制该请求,在响应被发给客户端前,可以对响应加以处理。尤其是在入站的请求包括用户验证,日志的用法上。而出站响应的功能包括加密和压缩。这个标注用来建立起过滤器类和URL请求模式之间的关联,并指示过滤器类可以处理异步NIO。

  WebInitParam

  这些标注通过使用和web.xml中“init-param”功能一样的标注名称和值,提供了一种在servlet或过滤器类中声明初始化参数的方式。

  WebListener

  监听器类是在web应用周期的过程中接收事件通知的类。Servlet 3.0 API定义了至少9个不同的监听器接口。而不是为每个类型都定义标注,WebListener这个标注声明了这个类是个监听器,但容器必须检查这个类并注册一个实例来接受相应的事件。

  WebServlet

  这个标注将一个类标记为HttpServlet基类的扩展,并为定义许多和servlet实例相关的参数提供扩展功能。比如,它对URL的模式的响应,以及是否支持异步操作。

  异步操作

  Servlet 2.5 处理请求时仍然是一个请求在一个线程中处理,但随着功能的增强,已经要求使用非阻塞输入输出(NIO)来优化。在过滤器和servlet类上必须用标注来指示他们可以利用NIO。基本的servlet请求和响应接口有处理NIO的增强功能。

  Glassfish和Servlet3.0

  对于Servlet API的2.5版本,Apache Tomcat工程曾经是参考实现。在Java兼容性套件的许可证有效期上,Sun和Apache软件基金会之间看起来好像有些冲突。正是这个原因,而不是由于API的技术水平,Glassfish工程是servlet 3.0 API实现的参考,而不是Tomcat。

  Glassfish v3 的发布是即将到来的Java企业版6的全部组件的完整实现。 因此它远不只是一个最小化的web服务器。有趣的好东西包括Jersey RESTful web服务工具套件,Java  Server Faces和很多其他新技术项目。 当写这篇文章的时候,Glassfish v3.0已经被作为“web预览”,每周发布一些粗略的项目构建。

  总结

  Servlet 3.0 是向前迈进的一大步,为web开发者带来目前Java语言最佳的性能和实践。这在不严重影响servlet 2.5 API开发者的前提下已经被实现。

相关推荐