Servlet規範v2.2 翻譯 (2)

 

1.   概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

1.1. 什麼是Servlet

Servlet是受容器管理的web組件,它能動態地生成內容。Servlet是一段小程序,被編譯成平臺無關、架構中立的的字節碼之後,可以被Web服務器器動態地加載和運行。Servlet通過容器實現的請求-相應(request-response)方式與Web瀏覽器進行交互,這種請求-相應模式是基於超文本傳輸協議(HTTP)的。

1.2. 什麼是Servlet容器

Servlet容器和Web服務器或者應用服務器一起提供網絡服務,能解析MIME編碼的請求,能生成MIME編碼格式的相應。容器還負責容納servlet,並對其生命週期進行管理。

Servlet容器可以內置在Web服務器中,也可以通過web服務器的擴展API作爲附加組件安裝。Servlet容器同樣可以作爲具體Web服務功能的應用服務器的內置模塊或者附加組件。

所有的Servlet容器必須支持HTTP協議,並可以支持其他基於請求-相應模式的協議,例如HTTPSServlet容器至少需要支持HTTP 1.0版本,並強烈建議同時支持HTTP 1.1版本。

Servlet容易可以對servlet的運行環境設置安全限制。在J2SE1.2或者J2EE 1.2環境下,這些限制條件應當使用Java2平臺所提供的授權框架來實現。例如,high end application servers 會限制某些操作,例如創建Thread對象,來保證容器的其他組件不會收到負面影響。

 

1.3. 一個例子

客戶端程序,如Web瀏覽器,使用HTTP請求來訪問Web服務器。請求首先被Web服務器處理,並被轉交給Servlet容器。Servlet根據內部配置決定調用哪一個servlet,並在調用時將代表requestresponse的對象傳遞給它。Servlet容器可以與Web服務器運行在同一個進程中,同一個主機的不同進程中,或者運行在不同的主機中。

Servlet通過request對象知道誰是遠程對象,哪些HTML表單參數作爲request的一部分被髮送,以及其他相關的數據。Servlet可以執行程序設定的各種邏輯,生成發還給客戶端的數據,並通過response對象將這些數據發還給客戶端。

一旦servlet完成對request的處理,servlet容器需要保證response內容被正確刷新,並將控制返還給Web服務器。

 

1.4. Servlet和其他技術的比較

從功能性的角度,Servlet介於CGI程序和私有服務器擴展(例如Netscape服務器APINSAPIApache模塊)之間。

相對於其他的服務器擴展機制,Servlet具備如下優點:

l         由於使用了不同的進程模型,其速度遠遠超過CGI腳本

l         使用標準API,這些API得到大量Web服務器的支持

l         擁有Java編程預言的所有有點,包括易於開發,平臺無關性

l         可以使用Java平臺所提供的大量API

1.5. ServletJ2EE的關係

Servlet APIJava 2 平臺企業版 1.2版本所需要的APIJ2EE規範描述了對servletservlet容易的附加要求。Servlet應當被部署到容器中,而容器和servlet則都運行在J2EE環境中。

1.6. 可分佈的Servlet容器

在這個版本的規範中,增加了一個特性:將一個Web應用標記爲可分佈。這個標記允許servlet容器提供商將一個Web應用的servlet部署在多個Java虛擬機中,而這些虛擬機可以運行在同一臺主機上,也可以運行在不同的主機上。一個被標記爲可分佈的應用必須遵循一些限制條件,使得支持分佈式應用的容器能實現集羣、失效轉移等特性。

高性能的環境支持可擴展性、集羣、失效轉移(J2EE兼容)。所有需要在高性能的環境下運行的Web應用,應當設計實現成爲可發佈的Web應用,這使得應用可以最大程度地利用服務器所提供的特性。如果一個不可分佈的應用部署在這樣一個服務器上,則不能充分利用服務器提供的特性。

 

1.7. 2.1版本之後的變動

2.1版正式發佈之後,對本規範的主要變動如下:

l         Web應用的概念的介紹

l         web application archive files的介紹

l         Response buffering(響應緩存)的介紹

l         可分佈servlet的介紹

l         增加通過名稱獲取RequestDispatcher的功能

l         增加通過相對路徑獲取RequestDispatcher的功能

l         改進國際化

l         對於分佈式servlet引擎語義的一些澄清

API做了如下變動:

l         ServletConfig接口添加了getServletName方法,用於獲取在系統中表示本servlet的名稱

l         ServletContext接口添加getInitParametergetInitParameterNames這兩個方法,使初始化參數能在應用層面被設置,並被改應用的所有servlet所共享

l         ServletRequest接口添加getLocale方法,幫助決定客戶端當前在哪個locale

l         ServletRequest接口添加isSecure方法,用於標識request是否通過安全的方式進行傳輸,例如使用HTTPS協議

l         修改了UnavailableException類的構造函數。因爲現有的構造器方面參數簽名容易被開發人員混淆。修改之後的構造器使用了更簡單的參數簽名。

l         HttpServletRequest接口添加getHeaders方法,用於獲取在request中,所有用某個名稱標識的頭信息

l         HttpServletRequest添加isUserInRolegetUserPrinciple兩個方法,使servlet可以使用基於抽象角色的認證

l         HttpServletResponse接口添加addHeaderaddIntHeaderaddDateHeader三個方法,允許使用同一個名字,創建多個頭信息

l         HttpSession接口添加getAttributegetAttributeNamessetAttributeremoveAttribute四個方法,以改進API的命名規範,相應地,getValue,getValueNames,setValueremoveValue這四個方法被廢棄。

此外,還增加了大量概念的說明和澄清。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章