天天看點

J2EE Architecture(7)

版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/1605607

 J2EE Architecture(7)

1、Servlet上下文

Web伺服器能支援若幹Web應用程式。每個Web應用程式又能支援一個或多個Servlet。

同一個Web應用程式的多個Servlet需要共享Web應用程式環境的資源。為此,Servlet規範提供了一個ServletContext接口。

Servlet可利用ServletContext對象執行登陸事件,獲得資源的URL索引,也可設定和存儲Web應用程式需要的屬性。

對于ServletContext而言,最重要的上下文資訊包括:

1)初始化參數

用來初始化應用程式。這些參數由部署描述符中的“鍵-值”對提供。

ServletContext API允許通過getInitParameter()和getInitParameterNames()等方法通路這些初始化參數。

2)上下文屬性

是一組應用程式屬性,由Web應用程式的Servlet共享。

可設定和獲得參數,也可通過程式設計方法,從Web應用程式中删除上下文屬性。

ServletContext API允許通過多種方法通路上下文屬性:setAttribute()、getAttribute()、removeAttribute()和getAttributeNames()等。

3)資源

“靜态”内容檔案的層次,是Web應用程式的一部分,被稱為“Web應用程式資源”,包括HTML、GIF和JPEG等檔案。

ServletContext API可通過多種方式通路這些資源,如getResource()和getResourceAsStream()等。

2、請求

Servlet的服務方法有權通路請求對象ServletRequest或HttpServletRequest。

請求對象包含客戶請求及其它一些相關資訊,該對象将用作傳給service()方法的兩個參數中的第一個參數。

請求參數采用“鍵-值”對格式。在特定環境下,一些鍵可能有多個值。

HttpServletRequest對象的幾個重要方面如下:

1)屬性

是與HttpServletRequest對象相關的對象。

屬性也采用“鍵-值”對形式,但一個屬性僅有一個值。

HttpServletRequest API可用多種方法通路屬性:getAttribute()、setAttribute()和getAttributeNames()等。

2)頭

頭是HTTP請求的一部分,Servlet可通過HttpServletRequest API方法,如getHeader()、getHeaders()或getHeaderNames()等通路這些頭資訊。

HttpServletRequest對象的頭可能包含integer、date的文本表示。為了通路它們,HttpServletRequest API提供了getIntHeader()和getDateHeader()方法。

3)Cookie

HTTP請求通常伴随着一個或多個Cookie,這些Cookie包含寶貴資料。

Cookie可以幫助Web應用程式建構用戶端和伺服器應用之間的會話。

HttpServletRequest API提供諸如getCookie()的方法,以便通路Cookie,并建立和維護會話。

3、響應

Servlet的服務方法有權通路響應對象。響應對象将是ServletResponse或HttpServletResponse。該對象包含了響應用戶端的資訊和所有其它相關細節,是service()方法兩個參數的第二個參數。

用戶端響應打包在HttpServletResponse對象在。HttpServletResponse對象的重要組成部分有:

1)頭

發送給用戶端的頭資訊可通過HttpServletResponse API獲得。

諸如addHeader()方法可用于建立發送給用戶端的頭資訊。

setHeader()方法可用于設定相應頭的頭值。

對于特定的類型,如integer和date型,HttpServletResponse API提供了addIntHeader()、setIntHeader()、addDateHeader()和setDateHeader()方法。

2)緩沖區

Servlet容器可以提供緩沖區功能,以增強“請求-響應”操作的性能和效率。

一些緩沖區功能可通過setBufferSize()、getBufferSize()、isCommitted()、reset()、resetBuffer()和flushBuffer()等方法實作。

3)響應類型和格式

發送給用戶端的輸出需要進行相應設定和簡化。

為此,HttpServletResponse API提供了以下方法:setContentType()、setContentLength()、getWriter()、getOutputStream()等。

開發人員需要根據setContentType()方法設定的内容類型設定響應格式。

例如:若setContentType()方法被設定為text/html類型,開發人員就需要根據業務需求設定相應的輸出格式。

程式設計人員在設計應用程式時,要認真選擇輸出的内容類型。還要了解輸出的表示部分,并全面了解HTML等表示語言的文法。

----------------------------

完成了HttpServletResponse對象就意味着service()方法執行結束。

在關閉響應時,Servlet容器必須清空客戶響應緩沖區剩餘的所有内容。

繼續閱讀