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