Servlet3.0新特性使用詳解

 在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風格,能夠要求響應保持打開,以容許當異步事件產生時發送額外的數據。
    • 阻塞/非阻塞通知——通知阻塞或非阻塞事件。
    • 頻道概念——訂閱一個頻道,以及從該頻道獲取異步事件的能力。這意味着能夠建立、訂閱、退訂,以及應用一些諸如誰能加入、誰不能加入的安全限制。
  • 安全
    • login/logout能力。
    • 自注冊。
  • 結合
    • 結合/需求,來自REST JST JSR(JSR 311 )。
    • 結合/需求,來自JSF 2.0 JSR(JSR 134 )。
  • 其它
    • 支持更好的歡迎文件(welcome file)。
    • ServletContextListener排序。
    • 容器範圍內定義init參數。
    • 文件上載——過程偵聽——存儲中間或最終文件。
    • 澄清線程安全問題。

 

 

咱們下面就看看其中幾個特性:web

1.可插拔的Web框架,其實就是web.xml中能夠又多個子模塊的配置文件組成,而各個子模塊的配置文件能夠放在各個jar包的META-INFO中,這樣就實現web應用的模塊化。編程

相似,能夠按照配置的順序指定了web片斷的順序。經過absolute-ordering進行絕對順序配置,經過每一個fragment的order的after和before標籤進行相對順序配置。安全

 

Xml代碼 複製代碼 收藏代碼
  1. <?xml version="1.0" encoding="GB18030"?>
  2. <web-app version="3.0"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  7. <absolute-ordering>
  8. <name>web-fragment1</name>
  9. <name>web-fragment2</name>
  10. </absolute-ordering></web-app>
Xml代碼 複製代碼 收藏代碼
  1. <?xml version="1.0" encoding="GB18030"?>
  2. <web-app version="3.0"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  7. <absolute-ordering>
  8. <name>web-fragment1</name>
  9. <name>web-fragment2</name>
  10. </absolute-ordering></web-app>

每一個fragment1的配置以下:網絡

 

Xml代碼 複製代碼 收藏代碼
  1. <?xml version="1.0" encoding="GB18030"?>
  2. <web-fragment version="3.0"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd">
  7.  
  8. <name>web-fragment1</name>
  9. <ordering><after>web-fragment1</after><before><others/></before></ordering>
  10.  
  11. </web-fragment>
Xml代碼 複製代碼 收藏代碼
  1. <?xml version="1.0" encoding="GB18030"?>
  2. <web-fragment version="3.0"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd">
  7.  
  8. <name>web-fragment1</name>
  9. <ordering><after>web-fragment1</after><before><others/></before></ordering>
  10.  
  11. </web-fragment>

2. servlet3.0的annotation支持併發

對於原來在web.xml定義的servlet,filter,listener,InitParam均可以經過annotation來配置了,而不須要在web.xml中定義。app

@WebFilter框架

相關文章
相關標籤/搜索