在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框架