資源描述:
《servlet 3.0 新特性詳解》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Servlet3.0新特性詳解序號版本號修訂日期修訂概述修訂人審核人批準(zhǔn)人備注1.0.12014-2-12初稿賀晉2.3.4.5.6.13目錄第1章概述31.1.Servlet3.0新特性概述3第2章特性說明42.1.異步處理支持42.2.新增的注解支持62.2.1.@WebServlet62.2.2.@WebInitParam72.2.3.@WebFilter72.2.4.@WebListener82.2.5.@MultipartConfig92.3.可插性支持92.4.ServletContext的性能增強112.5.HttpServlet
2、Request對文件上傳的支持12第3章總結(jié)133.1.參考資料1313第1章概述Servlet是JavaEE規(guī)范體系的重要組成部分,也是Java開發(fā)人員必須具備的基礎(chǔ)技能,Servlet3.0是Servlet規(guī)范的最新版本。本文主要介紹了Servlet3.0引入的若干重要新特性,包括異步處理、新增的注解支持、可插性支持等等。1.1.Servlet3.0新特性概述Servlet3.0作為JavaEE6規(guī)范體系中一員,隨著JavaEE6規(guī)范一起發(fā)布。該版本在前一版本(Servlet2.5)的基礎(chǔ)上提供了若干新特性用于簡化Web應(yīng)用的開發(fā)和部署。其
3、中有幾項特性的引入讓開發(fā)者感到非常興奮,同時也獲得了Java社區(qū)的一片贊譽之聲:異步處理支持:有了該特性,Servlet線程不再需要一直阻塞,直到業(yè)務(wù)處理完畢才能再輸出響應(yīng),最后才結(jié)束該Servlet線程。在接收到請求之后,Servlet線程可以將耗時的操作委派給另一個線程來完成,自己在不生成響應(yīng)的情況下返回至容器。針對業(yè)務(wù)處理較耗時的情況,這將大大減少服務(wù)器資源的占用,并且提高并發(fā)處理速度。新增的注解支持:該版本新增了若干注解,用于簡化Servlet、過濾器(Filter)和監(jiān)聽器(Listener)的聲明,這使得web.xml部署描述文件從
4、該版本開始不再是必選的了??刹逍灾С郑菏煜truts2的開發(fā)者一定會對其通過插件的方式與包括Spring在內(nèi)的各種常用框架的整合特性記憶猶新。將相應(yīng)的插件封裝成JAR包并放在類路徑下,Struts2運行時便能自動加載這些插件?,F(xiàn)在Servlet3.0提供了類似的特性,開發(fā)者可以通過插件的方式很方便的擴(kuò)充已有Web應(yīng)用的功能,而不需要修改原有的應(yīng)用。13第1章特性說明1.1.異步處理支持Servlet3.0之前,一個普通Servlet的主要工作流程大致如下:首先,Servlet接收到請求之后,可能需要對請求攜帶的數(shù)據(jù)進(jìn)行一些預(yù)處理;接著,調(diào)用業(yè)
5、務(wù)接口的某些方法,以完成業(yè)務(wù)處理;最后,根據(jù)處理的結(jié)果提交響應(yīng),Servlet線程結(jié)束。其中第二步的業(yè)務(wù)處理通常是最耗時的,這主要體現(xiàn)在數(shù)據(jù)庫操作,以及其它的跨網(wǎng)絡(luò)調(diào)用等,在此過程中,Servlet線程一直處于阻塞狀態(tài),直到業(yè)務(wù)方法執(zhí)行完畢。在處理業(yè)務(wù)的過程中,Servlet資源一直被占用而得不到釋放,對于并發(fā)較大的應(yīng)用,這有可能造成性能的瓶頸。對此,在以前通常是采用私有解決方案來提前結(jié)束Servlet線程,并及時釋放資源。Servlet3.0針對這個問題做了開創(chuàng)性的工作,現(xiàn)在通過使用Servlet3.0的異步處理支持,之前的Servlet處理
6、流程可以調(diào)整為如下的過程:首先,Servlet接收到請求之后,可能首先需要對請求攜帶的數(shù)據(jù)進(jìn)行一些預(yù)處理;接著,Servlet線程將請求轉(zhuǎn)交給一個異步線程來執(zhí)行業(yè)務(wù)處理,線程本身返回至容器,此時Servlet還沒有生成響應(yīng)數(shù)據(jù),異步線程處理完業(yè)務(wù)以后,可以直接生成響應(yīng)數(shù)據(jù)(異步線程擁有ServletRequest和ServletResponse對象的引用),或者將請求繼續(xù)轉(zhuǎn)發(fā)給其它Servlet。如此一來,Servlet線程不再是一直處于阻塞狀態(tài)以等待業(yè)務(wù)邏輯的處理,而是啟動異步線程之后可以立即返回。異步處理特性可以應(yīng)用于Servlet和過濾器
7、兩種組件,由于異步處理的工作模式和普通工作模式在實現(xiàn)上有著本質(zhì)的區(qū)別,因此默認(rèn)情況下,Servlet和過濾器并沒有開啟異步處理特性,如果希望使用該特性,則必須按照如下的方式啟用:1.對于使用傳統(tǒng)的部署描述文件(web.xml)配置Servlet和過濾器的情況,Servlet3.0為和標(biāo)簽增加了子標(biāo)簽,該標(biāo)簽的默認(rèn)取值為false,要啟用異步處理支持,則將其設(shè)為true即可。以Servlet為例,其配置方式如下所示:DemoServl
8、etfootmark.servlet.DemoServlet