前言:在開始介紹JSP的內(nèi)置對象之前,先講解JSP中4種屬性范圍,分別是page、request、session和application。對這幾個作用范圍的說明如下:
1. page范圍:指所設(shè)置的屬性僅在當(dāng)前頁面內(nèi)有效。使用pageContext的setAttribute()方法可以設(shè)置屬性值,使用pageContext的getAttribute()可以獲得屬性值。
2. request范圍:指屬性僅在一次請求的范圍內(nèi)有效。使用request的setAttribute()方法可以設(shè)置屬性值,使用request的getAttribute()可以獲得屬性值。
3. session范圍:指的是屬性僅在瀏覽器與服務(wù)器進行一次會話的范圍內(nèi)有效,當(dāng)和服務(wù)器斷開連接后,屬性就會失效。使用session的setAttribute()方法可以設(shè)置屬性值,使用session的getAttribute()可以獲得屬性值。
4. application范圍:指屬性在整個Web應(yīng)用中都有效,當(dāng)和服務(wù)器停止后才失效。使用application的setAttribute()方法可以設(shè)置屬性值,使用application的getAttribute()可以獲得屬性值。
下面開始介紹JSP的9種內(nèi)置對象:

request對象
用于獲取客戶端信息,例如我們在表單中填寫的信息等。實際上,JSP容器會將客戶端的請求信息封裝在request對象中。在客戶端發(fā)出請求時會創(chuàng)建request對象,在請求結(jié)束后,則會銷毀request對象。

通常在應(yīng)用中用的最多的就是客戶端請求的參數(shù)名稱和參數(shù)值。在request對象中提供了一系列的方法用來獲取客戶端的請求參數(shù),這些方法包括getParameter、getParameterNames、getParameterValues和getParameterMap。
response對象
response對象包含了從JSP頁面返回客戶端的所有信息,其作用域是它所在的頁面。response對象是javax.servlet.ServletResponse類的一個實例,它封裝由JSP產(chǎn)生的響應(yīng),并返回客戶端以響應(yīng)請求。它被作為_jspService()方法的一個參數(shù)而由引擎?zhèn)鬟f給JSP,在這里JSP要改動它。
response對象經(jīng)常用于設(shè)置HTTP標(biāo)題、添加cookie、設(shè)置響應(yīng)內(nèi)容的類型和狀態(tài)、發(fā)送HTTP重定向和編碼URL。

response的一個主要應(yīng)用是重定向??梢酝ㄟ^response的sendRedirect(String url)方法實現(xiàn)重定向。
out對象
out內(nèi)置對象是一個緩沖的輸入流,用來向客戶端返回信息。它是javax.servlet.jsp.JspWriter的一個實例。由于向客戶端輸出時要先進行連接,所以總是采用緩沖輸出的方式,因此out是緩沖輸入流。

out對象的典型應(yīng)用就是向客戶端輸出數(shù)據(jù)。
session對象
session對象是會話對象,用來紀(jì)錄每個客戶端的訪問狀態(tài)。

與session對象想逛的操作中最重要的就是關(guān)于屬性的操作,與屬性操作相關(guān)的方法主要有:setAttribute()、getAttribute()和maillogout.jsp。
application對象
application對象用于獲取和設(shè)置Servlet的相關(guān)信息,它的生命周期是從服務(wù)器啟動直到服務(wù)器關(guān)閉為止,即一旦創(chuàng)建一個application對象,該對象將會一直存在,直到服務(wù)器關(guān)閉。application中封裝了JSP所在的Web應(yīng)用中的信息。
application對象的常用方法如下:
void setAttribute(String name,Object value) ? 以鍵值對的方式,將一個對象的值存放到application中。
Object getAttribute(String name) ? 根據(jù)屬性名獲取application中存放的值。
pageContext對象
pageContext對象是一個比較特殊的對象,使用它不僅可以設(shè)置page范圍內(nèi)的屬性,還可以設(shè)置其他范圍內(nèi)的屬性。通過pageContext還可以訪問本頁面中的所有其他對象。

page對象
page對象指的是當(dāng)前的JSP頁面本身,它是java.lang.Object類的對象,通過page對象可以方便地調(diào)用Servlet類中定義的方法。page對象在實際開發(fā)過程中并不經(jīng)常使用。

config對象
config對象是ServletConfig類的一個實例,在Servlet初始化時,可以通過config向Servlet傳遞信息。所傳遞的信息可以是屬性名和屬性值構(gòu)成的名值對,也可以是通過ServletContext對象傳遞的服務(wù)器的相關(guān)信息。

exception對象
exception對象是java.lang.Throwable類的對象,用來處理頁面的錯誤和異常。在使用JSP進行開發(fā)時,習(xí)慣的做法是在一個頁面中使用page指令的errorPage屬性,讓該屬性指向一個專門用于處理異常處理的頁面。如果在JSP頁面中有未捕獲的異常,則會生成exception對象,然后將exception對象傳遞到page指令中設(shè)置的異常處理頁面中,在異常處理頁面中對exception對象進行處理。在異常處理頁面中需要將其page指令的isErrorPage屬性設(shè)置為true才可以使用exception對象。
