動(dòng)態(tài)網(wǎng)站開發(fā)中很重要的一個(gè)問題是網(wǎng)頁之間的信息傳遞和狀態(tài)維護(hù),每當(dāng)網(wǎng)頁被發(fā)送到服務(wù)器時(shí),都會(huì)在服務(wù)器端重新生成網(wǎng)頁。在這個(gè)往返過程(瀏覽器一服務(wù)器一瀏覽器)中,JSP提供了一些內(nèi)置對(duì)象保存所有與網(wǎng)頁關(guān)聯(lián)的信息。為簡(jiǎn)化頁面的開發(fā)過程,JSP提供了一些內(nèi)置對(duì)象,它們由容器實(shí)現(xiàn)和管理。在所有的JSP頁面中,這些內(nèi)置對(duì)象不需要預(yù)先聲明,也不需要由JSP應(yīng)用程序的編寫者進(jìn)行實(shí)例化就可以使用。JSP主要有out、request、response、session、application、pageContext、page、config和exception等9個(gè)內(nèi)置對(duì)象。
1、request對(duì)象
request 對(duì)象是javax.servlet.httpServletRequest類型的對(duì)象。該對(duì)象代表了客戶端的請(qǐng)求信息,主要用于接受通過HTTP協(xié)議傳送到服務(wù)器的數(shù)據(jù)。(包括頭信息、系統(tǒng)信息、請(qǐng)求方式以及請(qǐng)求參數(shù)等)。request對(duì)象的作用域?yàn)橐淮握?qǐng)求。
2、response對(duì)象
response 代表的是對(duì)客戶端的響應(yīng),主要是將JSP容器處理過的對(duì)象傳回到客戶端。response對(duì)象也具有作用域,它只在JSP頁面內(nèi)有效。
3、session對(duì)象
session 對(duì)象是由服務(wù)器自動(dòng)創(chuàng)建的與用戶請(qǐng)求相關(guān)的對(duì)象。服務(wù)器為每個(gè)用戶都生成一個(gè)session對(duì)象,用于保存該用戶的信息,跟蹤用戶的操作狀態(tài)。session對(duì)象內(nèi)部使用Map類來保存數(shù)據(jù),因此保存數(shù)據(jù)的格式為 “Key/value”。session對(duì)象的value可以使復(fù)雜的對(duì)象類型,而不僅僅局限于字符串類型。
4、application對(duì)象
application對(duì)象可將信息保存在服務(wù)器中,直到服務(wù)器關(guān)閉,否則application對(duì)象中保存的信息會(huì)在整個(gè)應(yīng)用中都有效。與session對(duì)象相比,application對(duì)象生命周期更長(zhǎng),類似于系統(tǒng)的“全局變量”。
5、out 對(duì)象
out 對(duì)象用于在Web瀏覽器內(nèi)輸出信息,并且管理應(yīng)用服務(wù)器上的輸出緩沖區(qū)。在使用out對(duì)象輸出數(shù)據(jù)時(shí),可以對(duì)數(shù)據(jù)緩沖區(qū)進(jìn)行操作,及時(shí)清除緩沖區(qū)中的殘余數(shù)據(jù),為其他的輸出讓出緩沖空間。待數(shù)據(jù)輸出完畢后,要及時(shí)關(guān)閉輸出流。
6、pageContext 對(duì)象
pageContext 對(duì)象的作用是取得任何范圍的參數(shù),通過它可以獲取JSP頁面的out、request、reponse、session、application等對(duì)象。pageContext對(duì)象的創(chuàng)建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對(duì)象。
7、config 對(duì)象
config 對(duì)象的主要作用是取得服務(wù)器的配置信息。通過pageConext對(duì)象的 getServletConfig() 方法可以獲取一個(gè)config對(duì)象。當(dāng)一個(gè)Servlet 初始化時(shí),容器把某些信息通過config對(duì)象傳遞給這個(gè)Servlet。開發(fā)者可以在web.xml文件中為應(yīng)用程序環(huán)境中的Servlet程序和JSP頁面提供初始化參數(shù)。
8、page 對(duì)象
page 對(duì)象代表JSP本身,只有在JSP頁面內(nèi)才是合法的。page隱含對(duì)象本質(zhì)上包含當(dāng)前 Servlet接口引用的變量,類似于Java編程中的 this 指針。
9、exception 對(duì)象
exception 對(duì)象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對(duì)象將無法編譯JSP文件。excepation對(duì)象和Java的所有對(duì)象一樣,都具有系統(tǒng)提供的繼承結(jié)構(gòu)。exception 對(duì)象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關(guān)鍵字來處理異常情況;如果在JSP頁面中出現(xiàn)沒有捕獲到的異常,就會(huì)生成 exception 對(duì)象,并把 exception對(duì)象傳送到在page指令中設(shè)定的錯(cuò)誤頁面中,然后在錯(cuò)誤頁面中處理相應(yīng)的 exception 對(duì)象。