Servlet3.1规范翻译——变更历史

变更历史

本文档是由Java社区进程SM (JCP)开发的Java Servlet 3.0 Servlet规范最终版本。

A.1 Servlet3.0以后的变更

1. 章节2.3.3.3,“异步处理”,和AsyncContextjavadoc

a. 阐明了AsyncListener.onStartAsync的行为。

b. 修复示例代码中的错误和注释。

c. 阐明了异步请求完成或分派之后的AsyncContext.getRequestAsyncContext.getResponse的行为。

2. 添加章节2.3.3.5,“升级处理”,和新的类ProtocolHandlerWebConnection

3. 章节3.2,“文件上传”,阐明了什么时候处理multi-part/form-data

4. 添加章节3.7的异步IO、“非阻塞IO”、和章节5.7,“响应对象的生命周期”。

5. 章节5.1,“缓冲”,和ServletResponsejavadoc。阐明了ServletResponse.reset的行为。

6. 章节6.2.1,“过滤器生命周期”(4)。需要过滤器和Servlet在同一个线程中处理。

7. 章节9.4,“Forward方法”,阐明了当请求进入异步模式时response的行为。

8. 章节15.3.1,“EJB™调用中的安全身份传播”,阐明提到Servlet.initServlet.destroy

9. ServletRequestWrapperServletResponseWrapperHandlesTypes中添加泛型。

10. HttpServletResponse.sendRedirectjavadoc:支持的网络路径引用。

11. 添加新的方法ServletRequest.getContentLengthLongServletResponse.setContentLengthLong

A.2 Servlet 3.0 Proposed Final Draft以后的变更

1. 重构一些异步API 移动addAsyncListenerAsyncContext 且重命名为addListener。移动setAsyncTimeoutAsyncContext且重命名为setTimeout

2. 阐明了异步处理中并发访问请求和响应的一些语义。

3. 更新了资源引用元素的可插拔性规则。

4. 添加了新的注解 @ServletSecurity (和用于字段的相关注解) 定义安全,而不重用@RolesAllowed@PermitAll@DenyAll

A.3 Servlet 3.0 Public Review以后的变更

1. 更新了isAsyncStarted返回false,一旦分派到了容器或从异步处理器(async handler)中调用complete 完成了。

2. 添加了fragment的顺序支持。

3. 添加了文件上传支持。

4. 添加了从JAR文件中加载静态资源和JSP的支持,其包含在绑定在WEB-INF/lib目录中的JAR文件的META-INF/resources目录中。

5. 根据规范的Public Review的反馈变更了注解名称。

6. 添加了编程式登录/退出支持。

7. 添加了安全相关的通用注解支持 @RolesAllowed@PermitAll@DenyAll

8. 阐明了welcome file

A.4 Servlet 3.0 EDR以后的变更

1. suspend / resume API在规范中不再存在。它们已经被startAsync和现在有forwardcompleteAsyncContext的所替代。

2. 注解名字已经改变为仅有顶层注解。生命Servlet方法的方法级注解不再被使用。

3. 描述了从fragment和注解装配web.xml的规则。

A.5 Servlet 2.5 MR6以后的变更

1. 添加了注解和web fragment的支持

2. 添加了对suspend / resume的支持以允许在servlet中异步。

3. 添加了从ServletContext在初始化时初始化servletfilter的支持。

4. 添加了HttpOnly cookie的支持并允许配置cookie

5. 添加了简便方法到ServletRequest,以获取ResponseServletContext

A.6 Servlet 2.5 MR 5以后的变更

A.6.1 阐明SRV 8.4Forward方法”

更改的本节最后一句目前是:

“在RequestDispatcherforward方法返回之前,响应内容必须被发送和提交,且由Servlet容器关闭。”

改为:

“在RequestDispatcher接口的forward方法无异常返回之前,响应的内容必须被发送和提交,且由Servlet容器关闭。如果RequestDispatcher.forward()的目标发生错误,异常信息会传回所有调用它经过的过滤器和servlet,且最终传回给容器。”

A.6.2 更新部署描述符“http-method values allowed

部署描述符中的http-method元素方面目前比http规范有更严格的限制。以下对描述符做出的改变,允许一组由HTTP规范定义的方法名。http-methodType模式的值从

<xsd:pattern value="[\p{L}-[\p{Cc}\p{Z}]]+"/>

改变为HTTP规范列出的允许的HTTP方法名的接近地匹配。

<xsd:pattern value="[&#33;-&#126;-[\(\)&#60;&#62;@,;:&#34;/\[\]?=\{\}\\\p{Z}]]+"/>

A.6.3 阐明 SRV 7.7.1 “多线程问题”

更改的段落当前是:

“在同一时间多个Servlet执行请求的线程可能都有到同一会话的活跃访问。开发人员负责同步访问适当的会话资源。”

改为:

“在同一时间多个Servlet执行请求的线程可能都有到同一会话的活跃访问。容器必须确保,以一种线程安全的方式维护表示会话属性的内部数据结构。开发人员负责线程安全的访问属性对象本身。这样将防止并发访问HttpSession对象内的属性集合,消除了应用程序导致破坏集合的机会。”

A.7 Servlet 2.5 MR 2以后的变更

A.7.1 更新JavaEE容器注解的要求

添加了15.5节“注解和资源注入”的描述列表所需的JavaEE容器注解EJBsPreDestroyPeristenceContextPersistenceContextsPersistenceUnit、和PersistenceUnits

A.7.2 更新Java企业版的要求

更新注解到最终JavaEE注解名。也更新了web.xml的“full”属性为“metadata-complete”。

A.7.3 阐明HttpServletRequest.getRequestURL()

阐明了API文档中的javax.servlet.http.HttpServletRequest.getRequestURL()

新增了斜体文本:

如果请求已使用RequestDispatcher.forward(ServletRequest, ServletResponse)转发,重新构建的URL中的服务器路径必须反映出得到的RequestDispatcher所使用的路径,且不是客户端指定的服务器路径。由于该方法返回一个StringBuffer,而不是一个String,你可以容易的修改此URL,例如,添加查询参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值