jsp 隱式對象
jsp隱式對象是jsp容器為每個頁面提供的java對象,開發(fā)者可以直接使用它們而不用顯式聲明。jsp隱式對象也被稱為預(yù)定義變量。
jsp所支持的九大隱式對象:
對象 | 描述 |
---|---|
request | httpservletrequest 接口的實例 |
response | httpservletresponse 接口的實例 |
out | jspwriter類的實例,用于把結(jié)果輸出至網(wǎng)頁上 |
session | httpsession類的實例 |
application | servletcontext類的實例,與應(yīng)用上下文有關(guān) |
config | servletconfig類的實例 |
pagecontext | pagecontext類的實例,提供對jsp頁面所有對象以及命名空間的訪問 |
page | 類似于java類中的this關(guān)鍵字 |
exception | exception類的對象,代表發(fā)生錯誤的jsp頁面中對應(yīng)的異常對象 |
request對象
request對象是javax.servlet.http.httpservletrequest 類的實例。每當(dāng)客戶端請求一個jsp頁面時,jsp引擎就會制造一個新的request對象來代表這個請求。
request對象提供了一系列方法來獲取http頭信息,cookies,http方法等等。
response對象
response對象是javax.servlet.http.httpservletresponse類的實例。當(dāng)服務(wù)器創(chuàng)建request對象時會同時創(chuàng)建用于響應(yīng)這個客戶端的response對象。
response對象也定義了處理http頭模塊的接口。通過這個對象,開發(fā)者們可以添加新的cookies,時間戳,http狀態(tài)碼等等。
out對象
out對象是 javax.servlet.jsp.jspwriter 類的實例,用來在response對象中寫入內(nèi)容。
最初的jspwriter類對象根據(jù)頁面是否有緩存來進(jìn)行不同的實例化操作??梢栽趐age指令中使用buffered='false'屬性來輕松關(guān)閉緩存。
jspwriter類包含了大部分java.io.printwriter類中的方法。不過,jspwriter新增了一些專為處理緩存而設(shè)計的方法。還有就是,jspwriter類會拋出ioexceptions異常,而printwriter不會。
下表列出了我們將會用來輸出boolean,char,int,double,string,object等類型數(shù)據(jù)的重要方法:
方法 | 描述 |
---|---|
out.print(datatype dt) | 輸出type類型的值 |
out.println(datatype dt) | 輸出type類型的值然后換行 |
out.flush() | 刷新輸出流 |
session對象
session對象是 javax.servlet.http.httpsession 類的實例。和java servlets中的session對象有一樣的行為。
session對象用來跟蹤在各個客戶端請求間的會話。
application對象
application對象直接包裝了servlet的servletcontext類的對象,是javax.servlet.servletcontext 類的實例。
這個對象在jsp頁面的整個生命周期中都代表著這個jsp頁面。這個對象在jsp頁面初始化時被創(chuàng)建,隨著jspdestroy()方法的調(diào)用而被移除。
通過向application中添加屬性,則所有組成您web應(yīng)用的jsp文件都能訪問到這些屬性。
config對象
config對象是 javax.servlet.servletconfig 類的實例,直接包裝了servlet的servletconfig類的對象。
這個對象允許開發(fā)者訪問servlet或者jsp引擎的初始化參數(shù),比如文件路徑等。
以下是config對象的使用方法,不是很重要,所以不常用:
config.getservletname();
它返回包含在元素中的servlet名字,注意,元素在 web-inf\web.xml 文件中定義。
pagecontext 對象
pagecontext對象是javax.servlet.jsp.pagecontext 類的實例,用來代表整個jsp頁面。
這個對象主要用來訪問頁面信息,同時過濾掉大部分實現(xiàn)細(xì)節(jié)。
這個對象存儲了request對象和response對象的引用。application對象,config對象,session對象,out對象可以通過訪問這個對象的屬性來導(dǎo)出。
pagecontext對象也包含了傳給jsp頁面的指令信息,包括緩存信息,errorpage url,頁面scope等。
pagecontext類定義了一些字段,包括page_scope,request_scope,session_scope, application_scope。它也提供了40余種方法,有一半繼承自javax.servlet.jsp.jspcontext 類。
其中一個重要的方法就是 removeattribute(),它可接受一個或兩個參數(shù)。比如,pagecontext.removeattribute("attrname") 移除四個scope中相關(guān)屬性,但是下面這種方法只移除特定 scope 中的相關(guān)屬性:
pagecontext.removeattribute("attrname", page_scope);
page 對象
這個對象就是頁面實例的引用。它可以被看做是整個jsp頁面的代表。
page 對象就是this對象的同義詞。
exception 對象
exception 對象包裝了從先前頁面中拋出的異常信息。它通常被用來產(chǎn)生對出錯條件的適當(dāng)響應(yīng)。