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 這封裝了使用伺服器特定的功能,如更高效能的JspWriter
8 page 這只是一個同義詞,用於呼叫由翻譯的servlet類定義的方法。
9 Exception Exception物件允許指定的JSP存取異常資料。

1. request物件

request物件是javax.servlet.http.HttpServletRequest物件的一個範例。每當用戶端請求頁面時,JSP引擎將建立一個新物件來表示該請求。

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

在後續章節-JSP用戶端請求中涵蓋與request物件相關聯的一整套方法。

2. response物件

response物件是javax.servlet.http.HttpServletResponse物件的一個範例。就像伺服器建立request物件一樣,它還建立一個物件來表示對用戶端的響應。

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

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

3. out物件

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

初始化JspWriter物件根據頁面是否快取而不同地範例化。緩衝可以通過使用page指令的buffered ='false'屬性來關閉。

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

下表列出了用於寫入booleancharintdoubleobjectString等型別資料的重要方法。

編號 方法 描述
1 out.print(dataType dt) 列印資料型別值
2 out.println(dataType dt) 列印資料型別值,然後用新行(換行)字元終止行。
3 out.flush() 重新整理流

4. session物件

session物件是javax.servlet.http.HttpSession的一個範例,其行為與Java Servlet下的對談物件行為完全相同。
session物件用於跟蹤用戶端請求之間的用戶端對談。在隨後的章節 - JSP對談跟蹤中將介紹對談物件的完整使用。

5. application物件

application物件是生成的ServletServletContext物件的直接包裝,實際上是javax.servlet.ServletContext物件的一個範例。

application物件是JSP頁面在其整個生命週期中的表示。 當JSP頁面被初始化時,將建立此物件,並且在JSP頁面被jspDestroy()方法刪除時application物件也將被刪除。

通過向application物件新增屬性值,可以確保組成Web應用程式的所有JSP檔案都可以存取它。

JSP使用者點選統計章節中介紹和學習application物件如何使用。

6. config物件

config物件是javax.servlet.ServletConfig的範例化,是生成的servlet的ServletConfig物件周圍的直接包裝。

該物件允許JSP程式員存取Servlet或JSP引擎初始化引數,例如:路徑或檔案位置等。
以下組態方法是唯一可以使用的組態方法,它的用法是非常簡單的 -

config.getServletName();

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

7. pageContext物件

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

pageContext物件旨在作為存取有關頁面的資訊的一種手段,同時避免大部分實現細節。
該物件儲存對每個請求的請求和響應物件的參照。應用程式,組態,對談和輸出物件是通過存取此物件的屬性匯出的。

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

PageContext類定義了幾個欄位,包括:PAGE_SCOPEREQUEST_SCOPESESSION_SCOPEAPPLICATION_SCOPE,它們標識了四個範圍。它還支援超過40種方法,其中約一半是從javax.servlet.jsp.JspContext類繼承的。

其中一個重要的方法是removeAttribute。 此方法接受一個或兩個引數。 例如,pageContext.removeAttribute("attrName")從所有作用域中刪除屬性,而以下程式碼僅將其從頁面範圍中刪除 -

pageContext.removeAttribute("attrName", PAGE_SCOPE);

可以在JSP檔案上傳章節中檢視pageContext是如何使用的。

8. page物件

page物件是對該頁面範例的實際參照。可以認為它是表示整個JSP頁面的物件。

page物件是this物件的直接同義詞。

9. exception物件

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

我們將在JSP例外處理這一章中介紹這個物件的完整用法。