JSP 隱式對(duì)象

2022-06-20 14:28 更新

JSP隱式對(duì)象是JSP容器為每個(gè)頁(yè)面提供的Java對(duì)象,開(kāi)發(fā)者可以直接使用它們而不用顯式聲明。JSP隱式對(duì)象也被稱為預(yù)定義變量。

JSP所支持的九大隱式對(duì)象:

對(duì)象 描述
request HttpServletRequest類的實(shí)例
response HttpServletResponse類的實(shí)例
out PrintWriter類的實(shí)例,用于把結(jié)果輸出至網(wǎng)頁(yè)上
session HttpSession類的實(shí)例
application ServletContext類的實(shí)例,與應(yīng)用上下文有關(guān)
config ServletConfig類的實(shí)例
pageContext PageContext類的實(shí)例,提供對(duì)JSP頁(yè)面所有對(duì)象以及命名空間的訪問(wèn)
page 類似于Java類中的this關(guān)鍵字
Exception Exception類的對(duì)象,代表發(fā)生錯(cuò)誤的JSP頁(yè)面中對(duì)應(yīng)的異常對(duì)象

request對(duì)象

request對(duì)象是javax.servlet.http.HttpServletRequest 類的實(shí)例。每當(dāng)客戶端請(qǐng)求一個(gè)JSP頁(yè)面時(shí),JSP引擎就會(huì)制造一個(gè)新的request對(duì)象來(lái)代表這個(gè)請(qǐng)求。

request對(duì)象提供了一系列方法來(lái)獲取HTTP頭信息,cookies,HTTP方法等等。


response對(duì)象

response對(duì)象是javax.servlet.http.HttpServletResponse類的實(shí)例。當(dāng)服務(wù)器創(chuàng)建request對(duì)象時(shí)會(huì)同時(shí)創(chuàng)建用于響應(yīng)這個(gè)客戶端的response對(duì)象。

response對(duì)象也定義了處理HTTP頭模塊的接口。通過(guò)這個(gè)對(duì)象,開(kāi)發(fā)者們可以添加新的cookies,時(shí)間戳,HTTP狀態(tài)碼等等。


out對(duì)象

out對(duì)象是 javax.servlet.jsp.JspWriter 類的實(shí)例,用來(lái)在response對(duì)象中寫入內(nèi)容。

最初的JspWriter類對(duì)象根據(jù)頁(yè)面是否有緩存來(lái)進(jìn)行不同的實(shí)例化操作??梢栽趐age指令中使用buffered='false'屬性來(lái)輕松關(guān)閉緩存。

JspWriter類包含了大部分java.io.PrintWriter類中的方法。不過(guò),JspWriter新增了一些專為處理緩存而設(shè)計(jì)的方法。還有就是,JspWriter類會(huì)拋出IOExceptions異常,而PrintWriter不會(huì)。

下表列出了我們將會(huì)用來(lái)輸出boolean,char,int,double,String,object等類型數(shù)據(jù)的重要方法:

方法 描述
out.print(dataType dt) 輸出Type類型的值
out.println(dataType dt) 輸出Type類型的值然后換行
out.flush() 刷新輸出流

session對(duì)象

session對(duì)象是 javax.servlet.http.HttpSession 類的實(shí)例。和Java Servlets中的session對(duì)象有一樣的行為。

session對(duì)象用來(lái)跟蹤在各個(gè)客戶端請(qǐng)求間的會(huì)話。


application對(duì)象

application對(duì)象直接包裝了servlet的ServletContext類的對(duì)象,是javax.servlet.ServletContext 類的實(shí)例。

這個(gè)對(duì)象在JSP頁(yè)面的整個(gè)生命周期中都代表著這個(gè)JSP頁(yè)面。這個(gè)對(duì)象在JSP頁(yè)面初始化時(shí)被創(chuàng)建,隨著jspDestroy()方法的調(diào)用而被移除。

通過(guò)向application中添加屬性,則所有組成您web應(yīng)用的JSP文件都能訪問(wèn)到這些屬性。


config對(duì)象

config對(duì)象是 javax.servlet.ServletConfig 類的實(shí)例,直接包裝了servlet的ServletConfig類的對(duì)象。

這個(gè)對(duì)象允許開(kāi)發(fā)者訪問(wèn)Servlet或者JSP引擎的初始化參數(shù),比如文件路徑等。

以下是config對(duì)象的使用方法,不是很重要,所以不常用:

config.getServletName();

它返回包含在<servlet-name>元素中的servlet名字,注意,<servlet-name>元素在 WEB-INF\web.xml 文件中定義。


pageContext 對(duì)象

pageContext對(duì)象是javax.servlet.jsp.PageContext 類的實(shí)例,用來(lái)代表整個(gè)JSP頁(yè)面。

這個(gè)對(duì)象主要用來(lái)訪問(wèn)頁(yè)面信息,同時(shí)過(guò)濾掉大部分實(shí)現(xiàn)細(xì)節(jié)。

這個(gè)對(duì)象存儲(chǔ)了request對(duì)象和response對(duì)象的引用。application對(duì)象,config對(duì)象,session對(duì)象,out對(duì)象可以通過(guò)訪問(wèn)這個(gè)對(duì)象的屬性來(lái)導(dǎo)出。

pageContext對(duì)象也包含了傳給JSP頁(yè)面的指令信息,包括緩存信息,ErrorPage URL,頁(yè)面scope等。

PageContext類定義了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40余種方法,有一半繼承自javax.servlet.jsp.JspContext 類。

其中一個(gè)重要的方法就是removeArribute(),它可接受一個(gè)或兩個(gè)參數(shù)。比如,pageContext.removeArribute("attrName")移除四個(gè)scope中相關(guān)屬性,但是下面這種方法只移除特定scope中的相關(guān)屬性:

pageContext.removeAttribute("attrName", PAGE_SCOPE);

page 對(duì)象

這個(gè)對(duì)象就是頁(yè)面實(shí)例的引用。它可以被看做是整個(gè)JSP頁(yè)面的代表。

page 對(duì)象就是this對(duì)象的同義詞。


exception 對(duì)象

exception 對(duì)象包裝了從先前頁(yè)面中拋出的異常信息。它通常被用來(lái)產(chǎn)生對(duì)出錯(cuò)條件的適當(dāng)響應(yīng)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)