JSP的內(nèi)置對(duì)象有9個(gè),他們分別為request、response、application、session、out、pageContext、config、page、exception對(duì)象。
request對(duì)象封裝了由客戶(hù)端產(chǎn)生的HTTP請(qǐng)求的所有細(xì)節(jié),主要包括HTTP頭信息、系統(tǒng)信息、請(qǐng)求方式和請(qǐng)求參數(shù)等。通過(guò)request對(duì)象提供的相應(yīng)方法可以處理客戶(hù)端瀏覽器提交的HTTP請(qǐng)求中的各項(xiàng)參數(shù)。在進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)時(shí),需要把一些數(shù)據(jù)傳遞到轉(zhuǎn)發(fā)后的頁(yè)面進(jìn)行處理。這是就需要使用request對(duì)象的setAttribute()方法將數(shù)據(jù)保存到request范圍內(nèi)的變量中,setAttribute(String key,String value)方法是以鍵值對(duì)的形式進(jìn)行存儲(chǔ)的,也可以通過(guò)getAttribute(String name)獲取由java程序獲取jsp中的name屬性值,獲取由前臺(tái)輸入框的值或者通過(guò)選擇框的值的獲取。獲取cookie的時(shí)候,需要通過(guò)getCookie()的方法即可獲取到所有cookie對(duì)象的集合,通過(guò)cookie對(duì)象中的getName()方法獲取到指定名稱(chēng)的cookie,通過(guò)cookie對(duì)象中的getValue()方法即可獲取到cookie對(duì)象的值。
response對(duì)象用于響應(yīng)客戶(hù)請(qǐng)求,向客戶(hù)端輸出信息。他封裝了jsp產(chǎn)生的響應(yīng),并發(fā)送到客戶(hù)端以響應(yīng)客戶(hù)端的請(qǐng)求。請(qǐng)求的數(shù)據(jù)可以是各種數(shù)據(jù)類(lèi)型,甚至是文件。該對(duì)象僅在jsp頁(yè)面內(nèi)有效。當(dāng)使用該對(duì)象提供setRedirect()方法可以將網(wǎng)頁(yè)重定向到另一個(gè)頁(yè)面,支持將地址重定向到不同的主機(jī)上,這一點(diǎn)與轉(zhuǎn)發(fā)不同。在客戶(hù)端瀏覽器上將會(huì)得到跳轉(zhuǎn)的地址,并重新發(fā)送請(qǐng)求鏈接,重定向之后,之前的request對(duì)象失效,開(kāi)始新的request對(duì)象,具體用法setRedirect(String path)。通過(guò)該對(duì)象可以設(shè)置HTTP響應(yīng)報(bào)頭,其中,常用的是禁用緩存、設(shè)置頁(yè)面自動(dòng)刷新和定時(shí)跳轉(zhuǎn)網(wǎng)頁(yè)。當(dāng)該對(duì)象設(shè)置輸出緩沖時(shí),需要注意的是,當(dāng)出現(xiàn)三種情況之一,就會(huì)把緩沖區(qū)寫(xiě)進(jìn)客戶(hù)端:1.頁(yè)面的輸出信息已經(jīng)全部寫(xiě)入到了緩存區(qū)。2。緩存區(qū)已滿(mǎn)。3.在JSP頁(yè)面中,調(diào)用了該對(duì)象的flushBuffere()方法或out對(duì)象的flush()。
session被稱(chēng)為會(huì)話(huà)。由于HTTP協(xié)議是一種無(wú)狀態(tài)協(xié)議,也就是當(dāng)客戶(hù)端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器接收器請(qǐng)求之后,并返回響應(yīng),該連接就結(jié)束了,而服務(wù)器并不保存相關(guān)信息。為了彌補(bǔ)這一缺點(diǎn),HTTP中提供了session。通過(guò)session可以在應(yīng)用程序的Web頁(yè)面間進(jìn)行跳轉(zhuǎn)時(shí),保存用戶(hù)的狀態(tài),使整個(gè)用戶(hù)會(huì)話(huà)一直存在下去,直到關(guān)閉瀏覽器。但是,如果在一個(gè)會(huì)話(huà)中,客戶(hù)端長(zhǎng)時(shí)間不向服務(wù)端發(fā)送請(qǐng)求,那么該對(duì)象就會(huì)消失,這個(gè)時(shí)間取決于服務(wù)器。
通過(guò)該對(duì)象可以存儲(chǔ)或者讀取客戶(hù)端相關(guān)的信息,可以通過(guò)該對(duì)象的setAttribute()和getAttribute()實(shí)現(xiàn)。setAttribute()用于將信息保存到session中,getAttribute()用于獲取保存session范圍內(nèi)的信息。移除session對(duì)象,可以使用該對(duì)象的removeAttribute()??梢酝ㄟ^(guò)invalidate()銷(xiāo)毀session,如果使用了該方法,在調(diào)用的時(shí)候,就會(huì)報(bào)出Session already invalidated異常。session是較常用的內(nèi)置對(duì)象之一,與request對(duì)象相比其作用范圍更大。