JSP - 隱式物件



本章我們將討論JSP中的隱式物件。這些物件是JSP容器在每個頁面都提供給開發者的Java物件,開發者可以直接呼叫它們而無需顯式宣告。JSP隱式物件也稱為**預定義變數**。

下表列出了JSP支援的九個隱式物件:

序號 物件及描述
1

request

這是與請求關聯的**HttpServletRequest**物件。

2

response

這是與對客戶端的響應關聯的**HttpServletResponse**物件。

3

out

這是用於向客戶端傳送輸出的**PrintWriter**物件。

4

session

這是與請求關聯的**HttpSession**物件。

5

application

這是與應用程式上下文關聯的**ServletContext**物件。

6

config

這是與頁面關聯的**ServletConfig**物件。

7

pageContext

它封裝了伺服器特定功能的使用,例如更高效能的**JspWriters**。

8

page

這只是**this**的同義詞,用於呼叫由轉換後的servlet類定義的方法。

9

Exception

**Exception**物件允許指定JSP訪問異常資料。

request 物件

request 物件是**javax.servlet.http.HttpServletRequest**物件的例項。每次客戶端請求頁面時,JSP引擎都會建立一個新物件來表示該請求。

request 物件提供方法來獲取HTTP標頭資訊,包括表單資料、Cookie、HTTP方法等。

我們將在後續章節中介紹與request物件相關的一整套方法:JSP - 客戶端請求

response 物件

response 物件是**javax.servlet.http.HttpServletResponse**物件的例項。正如伺服器建立request物件一樣,它還會建立一個物件來表示對客戶端的響應。

response 物件還定義了處理建立新的HTTP標頭的介面。透過此物件,JSP程式設計師可以新增新的Cookie或日期戳、HTTP狀態碼等。

我們將在後續章節中介紹與response物件相關的一整套方法:JSP - 伺服器響應

out 物件

out隱式物件是**javax.servlet.jsp.JspWriter**物件的例項,用於傳送響應中的內容。

初始JspWriter物件的例項化方式不同,取決於頁面是否已緩衝。可以透過使用page指令的**buffered = 'false'**屬性輕鬆關閉緩衝。

JspWriter物件包含與**java.io.PrintWriter**類大部分相同的方法。但是,JspWriter有一些額外的方法用於處理緩衝。與PrintWriter物件不同,JspWriter會丟擲**IOExceptions**。

下表列出了我們將用來寫入**boolean char, int, double, object, String**等的重要方法:

序號 方法及描述
1

out.print(dataType dt)

列印資料型別值

2

out.println(dataType dt)

列印資料型別值,然後用換行符結束該行。

3

out.flush()

重新整理流。

session 物件

session 物件是**javax.servlet.http.HttpSession**的例項,其行為與Java Servlet中的session物件完全相同。

session 物件用於在客戶端請求之間跟蹤客戶端會話。我們將在後續章節中介紹session物件的完整用法:JSP - 會話跟蹤

application 物件

application 物件是生成的Servlet的**ServletContext**物件的直接包裝器,實際上是**javax.servlet.ServletContext**物件的例項。

此物件代表JSP頁面在其整個生命週期中的狀態。此物件在JSP頁面初始化時建立,並在JSP頁面被**jspDestroy()**方法移除時移除。

透過向application新增屬性,您可以確保構成Web應用程式的所有JSP檔案都可以訪問它。

我們將在JSP - 點選計數器章節中檢查Application物件的用法。

config 物件

config 物件是**javax.servlet.ServletConfig**的例項,是生成的servlet的**ServletConfig**物件的直接包裝器。

此物件允許JSP程式設計師訪問Servlet或JSP引擎初始化引數,例如路徑或檔案位置等。

以下是您可能唯一會用到的**config**方法,其用法很簡單:

config.getServletName();

這將返回servlet名稱,即**WEB-INF\web.xml**檔案中定義的**<servlet-name>**元素中包含的字串。

pageContext 物件

pageContext 物件是**javax.servlet.jsp.PageContext**物件的例項。pageContext物件用於表示整個JSP頁面。

此物件旨在作為一種訪問有關頁面的資訊的方法,同時避免大多數實現細節。

此物件儲存對每個請求的request和response物件的引用。**application、config、session**和out物件是透過訪問此物件的屬性而派生的。

pageContext物件還包含有關發出給JSP頁面的指令的資訊,包括緩衝資訊、errorPageURL和頁面範圍。

PageContext類定義了幾個欄位,包括**PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE**和**APPLICATION_SCOPE**,它們標識四個範圍。它還支援40多種方法,其中大約一半是從**javax.servlet.jsp.JspContext類**繼承的。

其中一個重要的方法是**removeAttribute**。此方法接受一個或兩個引數。例如,**pageContext.removeAttribute ("attrName")**會從所有範圍內刪除屬性,而以下程式碼只會從頁面範圍內刪除它:

pageContext.removeAttribute("attrName", PAGE_SCOPE);

可以在JSP - 檔案上傳章節中檢視pageContext的用法。

page 物件

此物件是對頁面的例項的實際引用。可以將其視為表示整個JSP頁面的物件。

page物件實際上是**this**物件的直接同義詞。

exception 物件

exception 物件是一個包裝器,包含從前一個頁面丟擲的異常。它通常用於生成對錯誤條件的適當響應。

我們將在JSP - 異常處理章節中介紹此物件的完整用法。

廣告
© . All rights reserved.