决定翻译这篇servlet3.0的文章,一是因为tomcat7全面支持servlet3.0,并且马上要推出(新闻里看到的),二是感觉作为javaer要有奉献精神,这篇文章是自己少数看得懂的e文
JSR 315 (Servlet 3.0)是对已经存在的Servlet 2.5的一个升级规范. Servlet 3.0 旨在增加扩展性和实现可插拔框架插件,并且和J2EE6规范对应,使之更容易的支持最新的语言特性. Servlet3.0已经在 GlassFish v3 被完好的实现. 这篇文章包括以下servlet3.0内容:
- 可插入性
- 更易使用
- 异步支持
- 安全性增强
- 多方面的改变
在这篇文章,我们会让你更快的了解到新的sevlet3.0规范有什么新的惊喜,并且告诉你更多的细节。注意: 这篇文章符合现在的sevlet3.0规范,但是sevlet3.0规范将有可能些许改变
专家组
来自Sun公司的Rajiv Mordani 是这个规范的引领者,同时还有一个有有许多java社区相当有名的公司的专家组成的专家组。
- Adobe Systems Inc.
- Apache Software Foundation
- BEA Systems
- Ericsson AB
- Google Inc.
- Hunter, Jason
- IBM
- Icesoft Technologies Inc
- NCsoft Corporation
- Oracle
- Pramati Technologies
- Prasanna, Dhanji R.
- SAP AG
- Ship, Howard M. Lewis
- Suleiman, Hani
- Sun Microsystems, Inc.
- Tmax Soft, Inc.
- Walker, Joe
- Wilkins, Gregory John
可插拔性
由于有这么多受欢迎的web框架, Servlet 3.0 会让配置这些开发者选择的框架变得更加简单。因此增加一个Struts,或者Spring Web Flow将会非常容易。
添加Sevlet和Filter的方法
如果ServletContextListener已经注册,并且你想添加一个新的Servlet或者一个Filter,你可以实时增加一个Listener或者Servlet到环境中(就是支持新增加servlet类的热部署了不知道有没有理解错,原文是then at the time of context initialization the event that is fired to the Listener can add Servlets and Filters to the context)。方法是addServlet和addFilter,更多的细节请查看java社区网站的javadoc http://jcp.org/aboutJava/communityprocess/pr/jsr315/index.html.
· Web 分段
原先开发者要声明sevlets,filter或者其他框架的配置在web.xml。不用再被庞大臃肿的web.xml文件烦恼,现在框架的配置文件可以单独声明在一个类似web-fragment.xml的文件中。
一个web-fragment.xml其实是和web.xml一样,并且可以包含被框架META-INF和框架jar包所需要的所有配置。这样容器将会使用那些为该应用定义的描述,该应用将不会用到那些为框架而配置的描述。Web分段有个规范用来解决配置冲突,比如重写配置或者使某些配置片段失去功能.同时也可以使用annotations,这样强制开发者和框架设计者可以自己使用自己所需要的web.xml配置,互不干扰.
最大的好处是jar包的提供者可以提供自己的web.xml在自己的应用中
有一些新的annotations被定义用于使servlet3.0的 开发更加方便。允许你写一个不需要任何配置文件的servlet.这些annotations存在于javax.servlet.annotation包中.感谢这些新的annotations,现在你可以定义一个Servlet,Filter或者ServletContextLIstener 而摆脱web.xml配置文件
这是一个很重要的创建让web.xml 可选,而不是集中了一堆又一堆的配置在web.xml中。可以通过annotations写元数据,来实现web.xml以前实现的功能。
通过专家组和社区的讨论,决定方法级别的annotations还是不会加入,因此你要使用doGet,doPost方法还是得集成HttpServlet类。让我们通过一段代码来更进一步来了解Servlet3.0的annotations新规范吧。
Servlet Annotation
在 Servlet 3.0中, servlet 元数据 可以通过 @WebServlet定义
看一看源代码
1.
@WebServlet
(name=
"mytest"
,
2.
urlPatterns={
"/myurl"
},
3.
initParams={
@InitParam
(name=
"n1"
, value=
"v1"
),
@InitParam
(name=
"n2"
, value=
"v2"
) })
4.
public
class
TestServlet
extends
javax.servlet.http.HttpServlet {
5.
....
6.
}
TestServlet 继承自HttpServlet, annotation和t web.xml配置的对照关系见下表:
Parameter
|
Annotation Parameter
|
web.xml
|
Servlet name
|
name=
|
<servlet><servlet-name>
|
URL Pattern
|
urlPatterns={ }
|
<servlet-mapping>
|
Initialization parameters
|
InitParams={ @InitParam{name=””, value=””}
|
<servlet>
<init-param>
<param-name>.. </param-name>
<param-value>.. </param-value>
<init-param>
|
Servlet Filter Annotation
ServletFilter 元数据通过 @ServletFilter annotation定义配置
1.
public
void
doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws
IOException, ServletException {
2.
....
3.
}
4.
5.
public
void
destroy() {
6.
....
7.
}
8.
}
Parameter
|
Annotation Parameter
|
web.xml
|
URL Pattern
|
urlPatterns={ }
|
<servlet-mapping>
|
Initialization parameters
|
InitParams={ @InitParam{name=””, value=””}
|
<servlet>
<init-param>
<param-name>.. </param-name>
<param-value>.. </param-value>
<init-param>
|
Servlet Context Listener Annotation
现在ServletContextListener可以很简单的加上一个@WebServletContextListener ,而完全不用在web.xml中配置它,怎么样这个功能方便把。
01.
@WebServletContextListener
02.
public
class
TestServletContextListener
implements
javax.servlet.ServletContextListener {
03.
....
04.
public
void
contextInitialized(ServletContextEvent sce) {
05.
....
06.
}
07.
08.
public
void
contextDestroyed(ServletContextEvent sce) {
09.
....
10.
}
11.
}
· 异步支持
规范中最大的改变就是增加了异步处理功能。主要覆盖的情况如下:
· 等待一个资源成为可能,比如在jdbc或者调用一个webService。
· 响应的异步生成.
· 利用现有框架,在所有处理完成之后,再生成一个异步响应.
最早的讨论被搁置后又继续了,最近的规范在ServletRequest 的stratAsync()方法中y有两个变种,
一个是(startAsync() )不携带任何参数并且用原始的request和response初始化一个AsynContext . 另外一个把 ( startAsync() )request和response当成方法的参数去初始化AsyncContext(这两个有点懵原文在下面e文好的同学可以自己看One (startAsync() ) takes no parameters and initialises an AsyncContext with the original request and response. The ( startAsync() ) other takes a request and response as a parameter to initialise the AsyncContext with.)
Servlets (@WebServlet) 和 Filters (@ServletFilter)
如果要支持异步处理的话需要用supportAsync 属性集的注释.如果你的Servlet或者Filter不支持异步处理的话,那么在一次请求request传递链(包括其中有支持异步处理的Servlet)将会是非法的。
同时有一个异步的Listener可以监听通知request的异步处理超时或者已经完毕. 如果这些被request和response使用的时候被wrapped过,
这个监听器可以用来清除资源,
安全性增强
当一个ServletRequest 被强迫被登录的时候,HTTPServletRequest将会被增强通过允许程序级别的登录和注销。
注销方法允许应用程序重设request验证状态和不需要绑定验证到HTTPSession中.
结论
这个规范刚刚被Glassfish v3实现,这个规范要求整合J2EE6.因此以后所有特性描述都适用于J2EE6兼容的容器中.
以上所有的特性也将会使得开发Java Web程序更加的容易.
感谢Rajiv Mordani 写了这篇文章,同时也感谢 Shing Wai 和 Jan Luehe 提供了code样例
分享到:
相关推荐
Servlet3.0是Java EE平台中的一个重要组成部分,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。以下是对Servlet3.0主要特性的详细解释: 1. **注解配置**: 在Servlet3.0中,我们可以...
Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。这份"Servlet3.0参考手册"无疑为开发者提供了全面的API参考和实用指南。 首先,Servlet3.0...
Servlet 3.0是Java Servlet规范的一个重要版本,它带来了许多新特性和改进,极大地提升了Web应用程序的开发效率和灵活性。这个"javax.servlet-api-3.0.1.jar"文件是Servlet 3.0规范的API实现,包含了开发人员编写...
Servlet3.0是Java Servlet API的一个重要版本更新,它带来了许多新特性和改进,极大地提升了Web应用程序的开发效率和灵活性。以下将详细讲解Servlet3.0的关键特性。 1. **注解驱动的配置**: 在Servlet3.0之前,...
Servlet3.0是Java Servlet API的一个重要版本更新,它引入了许多新特性,极大地提升了Web开发的效率和灵活性。在这个主题中,我们将深入探讨Servlet3.0的三大关键特性:监听器(Listeners)、过滤器(Filters)的新...
这个教程旨在帮助开发者了解和掌握如何有效地利用Maven构建Java Web项目,并利用Servlet 3.0特性。 【描述】"maven servlet 3.0 eclipse config video" 涵盖了两个关键主题:Maven的配置和Servlet 3.0的集成。Maven...
本文将详细介绍 Servlet 3.0 的关键新特性,包括异步处理、新增的注解支持以及可插性支持等方面。 #### 异步处理支持 异步处理是 Servlet 3.0 中最为显著的新特性之一。这一特性解决了传统 Servlet 在处理长时间...
下载的`servlet3.0jar综合`压缩包包含了实现这些特性的关键库,对于进行Java EE 3.0开发的程序员来说是必不可少的工具。在实际开发中,结合相关的框架(如Spring MVC)和其他Java EE组件,可以构建出功能强大、易...
在这个主题中,我们将深入探讨Servlet 3.0的主要特性和功能,以及提供的两个jar包——`javax.servlet-3.0-sources.jar`和`javax.servlet.jar`的作用。 首先,Servlet 3.0作为Servlet API的一个版本,引入了许多新...
* @project servlet3.0 * servlet3.0的文件上传 * @date:2012-5-21 *在创建项目的时候首先添加Tomcat7.x的支持,然后把apache-tomcat-7.0.27\conf\web.xml拷贝到项目WEB-INF目录下 *把之前的web.xml覆盖.. 配置...
这个压缩包“servlet3.0.zip”包含两个核心的JAR文件:“javax.servlet-javadoc.jar”和“javax.servlet.jar”,它们分别提供了Servlet API的文档和实现。 1. **Servlet API**: - `javax.servlet`包是Servlet API...
在这个名为“servlet3.0-demo”的项目中,我们重点探讨的是如何利用Servlet 3.0的新特性进行文件上传操作,并且采用注解的方式来简化代码。 在Servlet 3.0之前,我们需要在web.xml中配置Servlet,然后通过继承...
【标题】"Jsp/Servlet3.0 ppt和代码"涉及的是Java服务器页面(JSP)和Servlet 3.0版本的关键技术。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现服务器端的动态内容生成。而Servlet是...
Servlet 3.0作为Servlet规范的一个重要版本,引入了许多新特性,其中最引人注目的就是异步处理和支持Web插座(WebSocket),这使得实时通信如聊天室的实现变得更加便捷。本文将深入探讨如何利用Servlet 3.0的异步...
最后,关于"链接.txt"、"创建MavenWeb项目Servlet3.0的模板"和"Idea安装插件"这三个文件,它们可能是教程的补充资料。"链接.txt"可能包含其他相关资源的URL;"创建MavenWeb项目Servlet3.0的模板"可能是一个详细的...
Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet API上引入了多项重大改进,极大地提升了开发效率和灵活性。这个压缩包包含了servlet3.0的jar包和对应的doc文档,非常适合开发者学习和使用。 首先,我们...
Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。在这个"Servlet3.0 Demo"项目中,我们可以看到一个典型的使用Servlet3.0特性的示例。以下是...
Servlet 3.0是Java服务器页面(JSP)和Servlet技术的一个重要版本更新,它引入了许多新特性,提升了Web应用程序的开发效率和灵活性。在JSR-315(JavaTM Servlet 3.0 API Specification)中,专家小组对这项规范进行...
Servlet 3.0是Java EE 6规范的一部分,它引入了许多新特性,极大地提升了Web开发的效率和灵活性。其中,文件上传接口的改进是开发者们非常关注的一个亮点。在这个更新中,Servlet API提供了更简单、更高效的方式来...
Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。在这个"Servlet3.0相关的包"中,包含了以下几个关键组件: 1. **Servlet**: 这是Java ...