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