Servlet2.5和 3.0區別(Servlet 3.0 新特性詳解)

來源:互聯網
上載者:User
Servlet 3.0 新特性概述

Servlet 3.0 作為 Java EE 6 規範體系中一員,隨著 Java EE 6 規範一起發布。該版本在前一版本(Servlet 2.5)的基礎上提供了若干新特性用於簡化 Web 應用程式的開發和部署。其中有幾項特性的引入讓開發人員感到非常興奮,同時也獲得了 Java 社區的一片讚譽之聲: 非同步處理支援:有了該特性,Servlet 線程不再需要一直阻塞,直到業務處理完畢才能再輸出響應,最後才結束該 Servlet 線程。在接收到請求之後,Servlet 線程可以將耗時的操作委派給另一個線程來完成,自己在不產生響應的情況下返回至容器。針對業務處理較耗時的情況,這將大大減少伺服器資源的佔用,並且提高並發處理速度。 新增的註解支援:該版本新增了若干註解,用於簡化 Servlet、過濾器(Filter)和監聽器(Listener)的聲明,這使得 web.xml 部署描述檔案從該版本開始不再是必選的了。 可插性支援:熟悉 Struts2 的開發人員一定會對其通過外掛程式的方式與包括 Spring 在內的各種常用架構的整合特性記憶猶新。將相應的外掛程式封裝成 JAR 包並放在類路徑下,Struts2 運行時便能自動載入這些外掛程式。現在 Servlet 3.0 提供了類似的特性,開發人員可以通過外掛程式的方式很方便的擴充已有 Web 應用程式的功能,而不需要修改原有的應用。

下面我們將逐一講解這些新特性,通過下面的學習,讀者將能夠明晰瞭解 Servlet 3.0 的變化,並能夠順利使用它進行日常的開發工作。 非同步處理支援

Servlet 3.0 之前,一個普通 Servlet 的主要工作流程大致如下:首先,Servlet 接收到請求之後,可能需要對請求攜帶的資料進行一些預先處理;接著,調用業務介面的某些方法,以完成業務處理;最後,根據處理的結果提交響應,Servlet 線程結束。其中第二步的業務處理通常是最耗時的,這主要體現在資料庫操作,以及其它的跨網路調用等,在此過程中,Servlet 線程一直處於阻塞狀態,直到業務方法執行完畢。在處理業務的過程中,Servlet 資源一直被佔用而得不到釋放,對於並發較大的應用,這有可能造成效能的瓶頸。對此,在以前通常是採用私人解決方案來提前結束 Servlet 線程,並及時釋放資源。

Servlet 3.0 針對這個問題做了開創性的工作,現在通過使用 Servlet 3.0 的非同步處理支援,之前的 Servlet 處理流程可以調整為如下的過程:首先,Servlet 接收到請求之後,可能首先需要對請求攜帶的資料進行一些預先處理;接著,Servlet 線程將請求轉交給一個非同步線程來執行業務處理,線程本身返回至容器,此時 Servlet 還沒有產生響應資料,非同步線程處理完業務以後,可以直接產生響應資料(非同步線程擁有 ServletRequest 和 ServletResponse 對象的引用),或者將請求繼續轉寄給其它 Servlet。如此一來, Servlet 線程不再是一直處於阻塞狀態以等待商務邏輯的處理,而是啟動非同步線程之後可以立即返回。

非同步處理特性可以應用於 Servlet 和過濾器兩種組件,由於非同步處理的工作模式和普通工作模式在實現上有著本質的區別,因此預設情況下,Servlet 和過濾器並沒有開啟非同步處理特性,如果希望使用該特性,則必須按照如下的方式啟用: 對於使用傳統的部署描述檔案 (web.xml) 配置 Servlet 和過濾器的情況,Servlet 3.0 為 <servlet> 和 <filter> 標籤增加了 <async-supported> 子標籤,該標籤的預設取值為 false,要啟用非同步處理支援,則將其設為 true 即可。以 Servlet 為例,其配置方式如下所示:

1 2 3 4 5 < servlet >      < servlet-name >DemoServlet</ servlet-name >      < servlet-class >footmark.servlet.Demo Servlet</ servlet-class >      < async-supported >true</ async-supported > </ servlet >
對於使用 Servlet 3.0 提供的 @WebServlet 和 @WebFilter 進行 Servlet 或過濾器配置的情況,這兩個註解都提供了 asyncSupported 屬性,預設該屬性的取值為 false,要啟用非同步處理支援,只需將該屬性設定為 true 即可。以 @WebFilter 為例,其配置方式如下所示:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.