最近JavaEE 7也发布了,其包含的Servlet 3.1规范也发布了最终版,之前翻译的早期预览版本《Servlet3.1 edr 规范中文版》也有少许变化。所以最近利用业余时间修订了一下,提供给大家下载。
另外,目前正在整理一份servlet3.x示例,包含了servlet3.0及servlet3.1新特性的演示代码,可以前往github学习。
-----------------------------------------------------------------------------------------------------------------------------------
如下列表中红色部分是与之前的预览版之间的主要变化:
1. 1.6节,“与Java Servlet规范 2.5版本间的兼容性”。移除“1.6.1 监听器(Listener)顺序”。
2. 2.3.3.3节,“异步处理”,和AsyncContext的javadoc。
a. 明确了AsyncListener.onStartAsync的行为。
b. 修复示例代码中的错误和注释。
c. 明确了异步请求完成或分派之后的AsyncContext.getRequest和AsyncContext.getResponse的行为。
d. 指定默认异步超时值。
e. 出错时明确AsyncListener的行为。
3. 添加2.3.3.5节,“升级处理”,和新的类ProtocolHandler和WebConnection。
4. 3.2节,“文件上传”,明确了什么时候处理multi-part/form-data。
5. 3.7节“非阻塞IO”,5.7节“响应对象的生命周期”添加异步IO。
6. 明确4.4节,“配置方法”,ServletContextListener必须声明在描述符或以@WebListener注解的。
7. 添加HttpSessionIdListener到4.4.3.1节“void addListener(String className) ”、4.4.3.2节“<T extends EventListener> void addListener(T t) ”、4.4.3.3节“void addListener(Class <? extends EventListener> listenerClass) ”、4.4.3.4节“<T extends EventListener> void createListener(Class<T> clazz) ”、8.1.4节“@WebListener” 和15.5节“注解和资源注入”的监听器列表。
8. 4.4.3.5节,“用于编程式添加Servlet、Filter和Listener的注解处理需求”。更新参考。
9. 4.7节,“多主机和Servlet上下文”。添加ServletContext.getVirtualServerName方法。
10. 5.1节,“缓冲”,和ServletResponse的javadoc。明确了ServletResponse.reset的行为。
11. 第5章,“头字段”。更新X-Powered-By头字段。
12. 6.2.1节,“过滤器生命周期”(4)。需要过滤器和Servlet在同一个线程中处理。
13. 7.2节,“创建会话”。添加了更高会话ID。
14. 8.1节,“注解和可插拔性”,8.2.1节,“web.xml模块”,和1.6.1节,“处理注解”。明确metadata-complete行为。
15. 8.1.1节,“@WebServlet”。编程式添加servlet与一个名字不同于指定在注解中的。
16. 8.2.2节,“web.xml和web-fragment.xml顺序”,和8.2.4节,“共享库 / 运行时可插拔性”。无论是否设置了metadata-complete,HandlesTypes注解将应用。
17. 8.2.3节,“装配web.xml、web-fragment.xml描述符和注解”。明确Listener调用顺序。
18. 8.2.4节,“共享库 / 运行时可插拔性”,明确创建ServletCotnainerInitilizer实例。
19. 9.4节,“Forward方法”,明确了当请求进入异步模式时response的行为。
20. 表格11-2。添加“改变ID”事件。
21. 10.9.2节,“Error-Page”和14.4节,“部署描述符图解”。添加默认错误页面描述。
22. 11.3.3节,“监听器注册”。明确顺序。
23. 12.2节,“映射规范”。明确servlet映射到相同模式的行为。
24. 13.3节,“编程式安全”,13.4.1.3节,“映射@HttpConstraint和@HttpMethodConstraint为XML”,和13.8.1节,“组合约束”。添加角色“*”和“**”的描述。
25. 13.6.3节,“基于表单的认证”,添加状态码303。
26. 添加13.6.3.1节,“登录表单”。添加autocomplete=”off”。
27. 添加13.8.4节,“未覆盖(uncovered)的协议方法”。
28.14.3节,“部署描述符”,更新schema URL。
29. 章节15.3.1,“EJB™调用中的安全身份传播”,明确提到Servlet.init和Servlet.destroy。
30. 15.5.15,“JavaEE要求的上下文和依赖注入”。添加HttpUpgradeHandler和添加Java EE 7规范参考。
31. 在ServletRequestWrapper、ServletResponseWrapper和HandlesTypes中添加泛型。
32. HttpServletResponse.sendRedirect的javadoc:支持的网络路径引用。
33. 添加新的方法ServletRequest.getContentLengthLong和ServletResponse.setContentLengthLong。
34. 添加新的Part.getSubmittedFileName。