在本章中,我們將討論和學習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
異常。
下表列出了用於寫入boolean
,char
,int
,double
,object
,String
等類型數據的重要方法。
編號 | 方法 | 描述 |
---|---|---|
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
對象是生成的Servlet
的ServletContext
對象的直接包裝,實際上是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_SCOPE
,REQUEST_SCOPE
,SESSION_SCOPE
和APPLICATION_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異常處理這一章仲介紹這個對象的完整用法。