`
jinnianshilongnian
  • 浏览: 21433996 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2404932
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:2997590
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5631404
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:257542
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1593136
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:248958
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5847466
Group-logo
跟我学Nginx+Lua开...
浏览量:698110
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:780420
社区版块
存档分类
最新评论

Servlet3.1规范(最终版)中文版下载

 
阅读更多

最近JavaEE 7也发布了,其包含的Servlet 3.1规范也发布了最终版,之前翻译的早期预览版本《Servlet3.1 edr 规范中文版》也有少许变化。所以最近利用业余时间修订了一下,提供给大家下载。

 

点击下载《Servlet3.1规范(最终版)》

 

另外,目前正在整理一份servlet3.x示例,包含了servlet3.0及servlet3.1新特性的演示代码,可以前往github学习。

 

-----------------------------------------------------------------------------------------------------------------------------------

如下列表中红色部分是与之前的预览版之间的主要变化: 

1. 1.6节,“与Java Servlet规范 2.5版本间的兼容性”。移除“1.6.1 监听器(Listener)顺序”。

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

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

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

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

  d. 指定默认异步超时值。

  e. 出错时明确AsyncListener的行为。

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

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

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

6. 明确4.4节,“配置方法”,ServletContextListener必须声明在描述符或以@WebListener注解的。

7. 添加HttpSessionIdListener4.4.3.1void addListener(String className) ”、4.4.3.2<T extends EventListener> void addListener(T t) ”、4.4.3.3void 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节,“用于编程式添加ServletFilterListener的注解处理需求”。更新参考。

9. 4.7节,“多主机和Servlet上下文”。添加ServletContext.getVirtualServerName方法。

10. 5.1节,“缓冲”,和ServletResponsejavadoc。明确了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.xmlweb-fragment.xml顺序”,和8.2.4节,“共享库 / 运行时可插拔性”。无论是否设置了metadata-completeHandlesTypes注解将应用。

17. 8.2.3节,“装配web.xmlweb-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@HttpMethodConstraintXML”,和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.initServlet.destroy

30. 15.5.15,“JavaEE要求的上下文和依赖注入”。添加HttpUpgradeHandler和添加Java EE 7规范参考。

31. ServletRequestWrapperServletResponseWrapperHandlesTypes中添加泛型。

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

33. 添加新的方法ServletRequest.getContentLengthLong和ServletResponse.setContentLengthLong。 

34. 添加新的Part.getSubmittedFileName

36
5
分享到:
评论
41 楼 wpkzxp 2017-11-06  
当错误发生时,错误页面机制不会干预调用使用RequestDispatcher或filter.doFilter方法。用这种方法,过滤器或Servlet有机会使用RequestDispatcher处理产生的错误。这个什么意思啊
40 楼 恋空御月 2017-07-18  
发现有个地方翻译的不对,可能是笔误

2.3.3.1 多线程问题

最后一句话,

强烈推荐开发人员不要去通过service方法(或者那些由Service分派的方法),因为这将严重影响性能。

这里通过应该是同步吧

英语原文

It is strongly recommended that Developers not
synchronize the service method (or methods dispatched to it) in these
circumstances because of detrimental effects on performance.
39 楼 88929072 2017-06-13  
太棒啦,辛苦  
38 楼 wabiaozia 2016-02-22  
有知道“2.3.3.5 升级处理”章节中,
“servlet 容器完成所有过滤器的处理并标记连接已交给 HttpUpgradeHandler 协议处理器处理。”
这句怎么理解吗?
37 楼 一个java程序员 2015-11-11  
lianglaiyang 写道
请教个问题,可以通过servlet3来现实消息的推送么,如果用这种方法,有些什么需要注意的呢?

SSE
36 楼 LIKAILOVE 2015-08-13  
谢谢啊啊啊啊啊啊啊啊啊啊啊啊
35 楼 lianglaiyang 2015-06-10  
请教个问题,可以通过servlet3来现实消息的推送么,如果用这种方法,有些什么需要注意的呢?
34 楼 帅先勃 2015-05-28  
看你的文章已经有一段时间了,非常感谢你的分享!
看servlet规范让我想起一个困扰了很久的问题:
在汉化版文档27页,2.3.4 终止服务(End of Service)写道:
Servlet容器没必要保持装载的Servlet持续任何特定的一段时间。一个Servlet实例可能会在servlet容器内保持活跃(active)持续一段时间(以毫秒为单位),Servlet容器的寿命可能是几天,几个月,或几年,或者是任何之间的时间。
当Servlet容器确定servlet应该从服务中移除时,将调用Servlet接口的destroy方法以允许Servlet释放它使用的任何资源和保存任何持久化的状态。例如,当想要节省内存资源或它被关闭时,容器可以做这个。
在servlet容器调用destroy方法之前,它必须让当前正在执行service方法的任何线程完成执行,或者超过了服务器定义的时间限制。
一旦调用了servlet实例的destroy方法,容器无法再路由其他请求到该servlet实例了。如果容器需要再次使用该servlet,它必须用该servlet类的一个新的实例。在destroy方法完成后,servlet容器必须释放servlet实例以便被垃圾回收。
我想知道:servlet是单实例,多线程的。1,在Servlet容器如tomcat运行的时候,什么情况下一个servlet实例会被移除?
2,假如在真正的项目中有100个servlet,经常使用的只有20个,极少使用的有20个,那么这100servlet实例是否都会存在Servlet容器中,这样让人觉得有点浪费内存,那么Servlet容器会有自己的机制来优化?
33 楼 muqingren 2015-01-21  
   
32 楼 huangcanhui 2014-09-20  
感谢楼主,资料非常有用
31 楼 王佳佳 2014-08-01  
谢谢分享!
30 楼 wangnanjjtdd 2014-07-15  
非常感谢楼主分享...
29 楼 cx_jin 2013-12-11  
谢谢分享!
祝,快乐与你们永相伴!
28 楼 zzhjgs 2013-09-25  
   做得真好,非常感谢。
27 楼 exhoty 2013-09-23  
太感谢了,英文版读的我好痛苦,楼主有心了
26 楼 gy_hcr 2013-09-22  
谢谢分享,楼主辛苦!!
25 楼 wupuyuan 2013-09-22  
谢谢分享!
24 楼 fei_6666 2013-08-22  
23 楼 jinnianshilongnian 2013-08-02  
NightSnow 写道
jinnianshilongnian 写道
NightSnow 写道
看了下楼主代码,咱们管理AsyncContext的数据结构和方式都差不多
我遇到了一个问题,就是超时之后跨域的请求就会终止轮询了,而非跨域或者有消息在超时前推送,轮询都是正常的。想请教下楼主在AsyncContext超时的时候能够返回正确的状态码给客户端浏览器吗?想解决轮询的问题,而且客户端浏览器看到很多超时的错误也不舒服。

客户端的超时应该比服务器端的超时稍微长点。
如果是服务器,可以使用AsyncListener.onTimeout 回调 返回响应,你试试这个地控制下

如果是客户端,也需要接timeout异常,服务器无法返回数据。

长轮询不是很可靠,比如网络不是很好的时候,可能消息的推送是有问题的。


客户端没回调那天我后来才发现是跨域请求超时jquery不会回调error事件,后来我换成jquery-jsonp就好了。现在我不想往客户端浏览器返回错误码,AsyncListener.onTimeout(AsyncEvent even)监听我之前用来清理已被管理的连接,但是此时我用response往客户端写响应数据和设置状态码好像都没能返回到客户端。你测试过在onTimeout事件之后还可以写吗?如果实在没办法的话只能再用nginx之类的试一下。


onTimeout 比如jetty的默认行为是再隔几秒重新调度; 所以按理说还是可以写的; onTimeout需要自己complete,否则一直没释放;
22 楼 NightSnow 2013-08-02  
jinnianshilongnian 写道
NightSnow 写道
看了下楼主代码,咱们管理AsyncContext的数据结构和方式都差不多
我遇到了一个问题,就是超时之后跨域的请求就会终止轮询了,而非跨域或者有消息在超时前推送,轮询都是正常的。想请教下楼主在AsyncContext超时的时候能够返回正确的状态码给客户端浏览器吗?想解决轮询的问题,而且客户端浏览器看到很多超时的错误也不舒服。

客户端的超时应该比服务器端的超时稍微长点。
如果是服务器,可以使用AsyncListener.onTimeout 回调 返回响应,你试试这个地控制下

如果是客户端,也需要接timeout异常,服务器无法返回数据。

长轮询不是很可靠,比如网络不是很好的时候,可能消息的推送是有问题的。


客户端没回调那天我后来才发现是跨域请求超时jquery不会回调error事件,后来我换成jquery-jsonp就好了。现在我不想往客户端浏览器返回错误码,AsyncListener.onTimeout(AsyncEvent even)监听我之前用来清理已被管理的连接,但是此时我用response往客户端写响应数据和设置状态码好像都没能返回到客户端。你测试过在onTimeout事件之后还可以写吗?如果实在没办法的话只能再用nginx之类的试一下。

相关推荐

Global site tag (gtag.js) - Google Analytics