- JSP 基礎教程
- JSP - 首頁
- JSP - 概述
- JSP - 環境搭建
- JSP - 架構
- JSP - 生命週期
- JSP - 語法
- JSP - 指令
- JSP - 動作
- JSP - 隱式物件
- JSP - 客戶端請求
- JSP - 伺服器響應
- JSP - HTTP 狀態碼
- JSP - 表單處理
- JSP - 編寫過濾器
- JSP - Cookie 處理
- JSP - 會話跟蹤
- JSP - 檔案上傳
- JSP - 日期處理
- JSP - 頁面重定向
- JSP - 點選計數器
- JSP - 自動重新整理
- JSP - 傳送郵件
- 高階 JSP 教程
- JSP - 標準標籤庫
- JSP - 資料庫訪問
- JSP - XML 資料
- JSP - Java Bean
- JSP - 自定義標籤
- JSP - 表示式語言
- JSP - 異常處理
- JSP - 除錯
- JSP - 安全性
- JSP - 國際化
- JSP 有用資源
- JSP - 問答
- JSP - 快速指南
- JSP - 有用資源
- JSP - 討論
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 - 異常處理章節中介紹此物件的完整用法。