在本章中,我們將討論和學習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存取異常資料。 |
request
物件是javax.servlet.http.HttpServletRequest
物件的一個範例。每當用戶端請求頁面時,JSP引擎將建立一個新物件來表示該請求。
request
物件提供了獲取包括表單資料,Cookie,HTTP方法等HTTP頭資訊的方法。
在後續章節-JSP用戶端請求中涵蓋與request
物件相關聯的一整套方法。
response
物件是javax.servlet.http.HttpServletResponse
物件的一個範例。就像伺服器建立request
物件一樣,它還建立一個物件來表示對用戶端的響應。
response
物件還定義了處理建立新HTTP頭的介面。通過此物件,JSP程式員可以新增新的Cookie或日期戳,HTTP狀態程式碼等。
在後續章節 - JSP伺服器響應中介紹與response
物件相關聯的一整套方法。
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
物件是javax.servlet.http.HttpSession
的一個範例,其行為與Java Servlet下的對談物件行為完全相同。session
物件用於跟蹤用戶端請求之間的用戶端對談。在隨後的章節 - JSP對談跟蹤中將介紹對談物件的完整使用。
application
物件是生成的Servlet
的ServletContext
物件的直接包裝,實際上是javax.servlet.ServletContext
物件的一個範例。
application
物件是JSP頁面在其整個生命週期中的表示。 當JSP頁面被初始化時,將建立此物件,並且在JSP頁面被jspDestroy()
方法刪除時application
物件也將被刪除。
通過向application
物件新增屬性值,可以確保組成Web應用程式的所有JSP檔案都可以存取它。
在JSP使用者點選統計章節中介紹和學習application
物件如何使用。
config
物件是javax.servlet.ServletConfig
的範例化,是生成的servlet的ServletConfig
物件周圍的直接包裝。
該物件允許JSP程式員存取Servlet或JSP引擎初始化引數,例如:路徑或檔案位置等。
以下組態方法是唯一可以使用的組態方法,它的用法是非常簡單的 -
config.getServletName();
這將返回當前servlet
名稱,它是包含在WEB-INF\web.xml
檔案中定義的<servlet-name>
元素中的字串。
pageContext
物件是javax.servlet.jsp.PageContext
物件的一個範例。pageContext
物件用於表示整個JSP頁面。
pageContext
物件旨在作為存取有關頁面的資訊的一種手段,同時避免大部分實現細節。
該物件儲存對每個請求的請求和響應物件的參照。應用程式,組態,對談和輸出物件是通過存取此物件的屬性匯出的。
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
物件是一個包含上一頁丟擲的異常的包裝器。它通常用於生成對錯誤條件的適當響應。
我們將在JSP例外處理這一章中介紹這個物件的完整用法。