在infoq上有关于servlet3.0的新特性说明,我的以为比较全面java
- 可插拔的Web框架
- 几乎全部基于Java的web框架都创建在servlet之上。现今大多数web框架要么经过servlet、要么经过Web.xml插入。利用标注(Annotation)来定义servlet、listener、filter将使之(可插拔)成为可能。程序访问web.xml和动态改变web应用配置是所指望的特性。该JSR将致力于提供把不一样web框架无缝地插入到web应用的能力。
- EOD
- 标注——利用标注来做为编程的声明风格。
- web应用零配置是EoD努力方向之一。部署描述符将被用来覆盖配置。
- 范型(generic)——在API中尽量利用范型。
- 使用其它语言加强可能须要改善API可用性的地方。
- 支持异步和Comet
- 非阻塞输入——从客户端接收数据,即便数据到达缓慢也不会发生阻塞。
- 非阻塞输出——发送数据到客户端,即便客户端或网络很慢也不会发生阻塞。
- 延迟请求处理——Ajax web应用的Comet风格,能够要求一个请求处理被延迟,直到超时或一个事件发生。延迟请求处理对如下状况也颇有用:若是远程的/迟缓的资源必须在为该请求服务以前被得到;或者若是访问一个特殊资源,其须要扼杀一些请求以防止太多的并发访问。
- 延迟响应关闭——Ajax web应用的Comet风格,能够要求响应保持打开,以容许当异步事件产生时发送额外的数据。
- 阻塞/非阻塞通知——通知阻塞或非阻塞事件。
- 频道概念——订阅一个频道,以及从该频道获取异步事件的能力。这意味着能够建立、订阅、退订,以及应用一些诸如谁能加入、谁不能加入的安全限制。
- 安全
- 结合
- 其它
- 支持更好的欢迎文件(welcome file)。
- ServletContextListener排序。
- 容器范围内定义init参数。
- 文件上载——过程侦听——存储中间或最终文件。
- 澄清线程安全问题。
咱们下面就看看其中几个特性:web
1.可插拔的Web框架,其实就是web.xml中能够又多个子模块的配置文件组成,而各个子模块的配置文件能够放在各个jar包的META-INFO中,这样就实现web应用的模块化。编程
相似,能够按照配置的顺序指定了web片断的顺序。经过absolute-ordering进行绝对顺序配置,经过每一个fragment的order的after和before标签进行相对顺序配置。安全
- <?xml version="1.0" encoding="GB18030"?>
- <web-app version="3.0"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
- <absolute-ordering>
- <name>web-fragment1</name>
- <name>web-fragment2</name>
- </absolute-ordering></web-app>
- <?xml version="1.0" encoding="GB18030"?>
- <web-app version="3.0"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
- <absolute-ordering>
- <name>web-fragment1</name>
- <name>web-fragment2</name>
- </absolute-ordering></web-app>
<?xml version="1.0" encoding="GB18030"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<absolute-ordering>
<name>web-fragment1</name>
<name>web-fragment2</name>
</absolute-ordering></web-app>
每一个fragment1的配置以下:网络
- <?xml version="1.0" encoding="GB18030"?>
- <web-fragment version="3.0"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd">
-
- <name>web-fragment1</name>
- <ordering><after>web-fragment1</after><before><others/></before></ordering>
-
- </web-fragment>
- <?xml version="1.0" encoding="GB18030"?>
- <web-fragment version="3.0"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd">
-
- <name>web-fragment1</name>
- <ordering><after>web-fragment1</after><before><others/></before></ordering>
-
- </web-fragment>
<?xml version="1.0" encoding="GB18030"?>
<web-fragment version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd">
<name>web-fragment1</name>
<ordering><after>web-fragment1</after><before><others/></before></ordering>
</web-fragment>
2. servlet3.0的annotation支持并发
对于原来在web.xml定义的servlet,filter,listener,InitParam均可以经过annotation来配置了,而不须要在web.xml中定义。app
@WebFilter框架