什么是內(nèi)置對(duì)象?
在jsp開(kāi)發(fā)中會(huì)頻繁使用到一些對(duì)象,如ServletContext、HttpSession、PageContext等.
如果每次我們?cè)趈sp頁(yè)面中需要使用這些對(duì)象都要自己親自動(dòng)手創(chuàng)建就會(huì)特別的繁瑣.
SUN公司因此在設(shè)計(jì)jsp時(shí),在jsp頁(yè)面加載完畢之后自動(dòng)幫開(kāi)發(fā)者創(chuàng)建好了這些對(duì)象,開(kāi)發(fā)者只需要使用相應(yīng)的對(duì)象調(diào)用相應(yīng)的方法即可.這些系統(tǒng)創(chuàng)建好的對(duì)象就叫做內(nèi)置對(duì)象.
在servlet程序中,如果開(kāi)發(fā)者希望使用session對(duì)象,必須通過(guò)request.getSession()來(lái)得到session對(duì)象;而在jsp程序中,開(kāi)發(fā)中可直接使用session(系統(tǒng)幫我們創(chuàng)建好的session對(duì)象的名字就叫session)調(diào)用相應(yīng)的方法即可,如:session.getId().
JSP有九個(gè)內(nèi)置對(duì)象(又叫隱含對(duì)象),不需要預(yù)先聲明就可以在腳本代碼和表達(dá)式中隨意使用凳忙。
九大內(nèi)置對(duì)象簡(jiǎn)介:
-
out
對(duì)象:用于向客戶端嗡综、瀏覽器輸出數(shù)據(jù)。 -
request
對(duì)象:封裝了來(lái)自客戶端扑媚、瀏覽器的各種信息。 -
response
對(duì)象:封裝了服務(wù)器的響應(yīng)信息雷恃。 -
exception
對(duì)象:封裝了jsp程序執(zhí)行過(guò)程中發(fā)生的異常和錯(cuò)誤信息疆股。 -
config
對(duì)象:封裝了應(yīng)用程序的配置信息。 -
page
對(duì)象:指向了當(dāng)前jsp程序本身倒槐。 -
session
對(duì)象:用來(lái)保存會(huì)話信息旬痹。也就是說(shuō),可以實(shí)現(xiàn)在同一用戶的不同請(qǐng)求之間共享數(shù) -
application
對(duì)象:代表了當(dāng)前應(yīng)用程序的上下文讨越×讲校可以在不同的用戶之間共享信息。 -
pageContext
對(duì)象:提供了對(duì)jsp頁(yè)面所有對(duì)象以及命名空間的訪問(wèn)谎痢。
JSP九大內(nèi)置對(duì)象分類:
- 輸入輸出對(duì)象:
out
對(duì)象磕昼、response
對(duì)象、request
對(duì)象 - 通信控制對(duì)象:
pageContext
對(duì)象节猿、session
對(duì)象票从、application
對(duì)象 - Servlet對(duì)象:
page
對(duì)象、config
對(duì)象 - 錯(cuò)誤處理對(duì)象:
exception
對(duì)象
內(nèi)置對(duì)象解析:
out對(duì)象
out對(duì)象是一個(gè)輸出流滨嘱,用來(lái)向?yàn)g覽器輸出信息峰鄙,除了輸出各種信息外還負(fù)責(zé)對(duì)緩沖區(qū)進(jìn)行管理。
out對(duì)象方法:
-
print
或println
:輸出數(shù)據(jù) -
newLine
:輸出換行字符 -
flush
:輸出緩沖區(qū)數(shù)據(jù) -
close
:關(guān)閉輸出流 -
clear
:清除緩沖區(qū)中數(shù)據(jù),但不輸出到客戶端 -
clearBuffer
:清除緩沖區(qū)中數(shù)據(jù),輸出到客戶端 -
getBufferSize
:獲得緩沖區(qū)大小 -
getRemaining
:獲得緩沖區(qū)中沒(méi)有被占用的空間 -
isAutoFlush
:是否為自動(dòng)輸出
request對(duì)象
request對(duì)象封裝了從客戶端到服務(wù)器發(fā)出的請(qǐng)求信息太雨。
request對(duì)象方法:
-
isUserInRole
:判斷認(rèn)證后的用戶是否屬于某一成員組 -
getAttribute
:獲取指定屬性的值,如該屬性值不存在返回Null -
getAttributeNames
:獲取所有屬性名的集合 -
getCookies
:獲取所有Cookie對(duì)象 -
getCharacterEncoding
:獲取請(qǐng)求的字符編碼方式 -
getContentLength
:返回請(qǐng)求正文的長(zhǎng)度,如不確定返回-1 -
getHeader
:獲取指定名字報(bào)頭值 -
getHeaders
:獲取指定名字報(bào)頭的所有值,一個(gè)枚舉 -
getHeaderNames
:獲取所有報(bào)頭的名字,一個(gè)枚舉 -
getInputStream
:返回請(qǐng)求輸入流,獲取請(qǐng)求中的數(shù)據(jù) -
getMethod
:獲取客戶端向服務(wù)器端傳送數(shù)據(jù)的方法 -
getParameter
:獲取指定名字參數(shù)值 -
getParameterNames
:獲取所有參數(shù)的名字,一個(gè)枚舉 -
getParameterValues
:獲取指定名字參數(shù)的所有值 -
getProtocol
:獲取客戶端向服務(wù)器端傳送數(shù)據(jù)的協(xié)議名稱 -
getQueryString
:獲取以get方法向服務(wù)器傳送的查詢字符串 -
getRequestURI
:獲取發(fā)出請(qǐng)求字符串的客戶端地址 -
getRemoteAddr
:獲取客戶端的IP地址 -
getRemoteHost
:獲取客戶端的名字 -
getSession
:獲取和請(qǐng)求相關(guān)的會(huì)話 -
getServerName
:獲取服務(wù)器的名字 -
getServerPath
:獲取客戶端請(qǐng)求文件的路徑 -
getServerPort
:獲取服務(wù)器的端口號(hào) -
removeAttribute
:刪除請(qǐng)求中的一個(gè)屬性 -
setAttribute
:設(shè)置指定名字參數(shù)值
response對(duì)象
response對(duì)象主要用于對(duì)客戶端的請(qǐng)求進(jìn)行回應(yīng)吟榴。
以及處理http的連接信息,例如設(shè)置http文件頭囊扳,設(shè)置cookie對(duì)象等吩翻。
response對(duì)象方法:
-
addCookie
:添加一個(gè)Cookie對(duì)象 -
addHeader
:添加Http文件指定名字頭信息 -
containsHeader
:判斷指定名字Http文件頭信息是否存在 -
encodeURL
:使用sessionid封裝URL -
flushBuffer
:強(qiáng)制把當(dāng)前緩沖區(qū)內(nèi)容發(fā)送到客戶端 -
getBufferSize
:返回緩沖區(qū)大小 -
getOutputStream
:返回到客戶端的輸出流對(duì)象 -
sendError
:向客戶端發(fā)送錯(cuò)誤信息 -
sendRedirect
:把響應(yīng)發(fā)送到另一個(gè)位置進(jìn)行處理 -
setContentType
:設(shè)置響應(yīng)的MIME類型 -
setHeader
:設(shè)置指定名字的Http文件頭信息
session對(duì)象
session對(duì)象:是一個(gè)jsp內(nèi)置對(duì)象,它在第一個(gè)jsp被裝載時(shí)自動(dòng)創(chuàng)建锥咸,完成會(huì)話期管理狭瞎。從一個(gè)客戶打開(kāi)瀏覽器并連接到服務(wù)器開(kāi)始,到客戶關(guān)閉瀏覽器離開(kāi)這個(gè)服務(wù)器結(jié)束(或者超時(shí))搏予,被稱為一個(gè)會(huì)話熊锭。當(dāng)一個(gè)客戶訪問(wèn)一個(gè)服務(wù)器時(shí),可能會(huì)在這個(gè)服務(wù)器的幾個(gè)頁(yè)面之間切換,服務(wù)器應(yīng)當(dāng)通過(guò)某種辦法知道這是一個(gè)客戶碗殷,就需要?jiǎng)?chuàng)建session對(duì)象精绎。
http是無(wú)狀態(tài)的連接協(xié)議,需要使用session來(lái)存放用戶每次的登陸信息
session對(duì)象方法:
-
getAttribute
:獲取指定名字的屬性 -
getAttributeNames
:獲取session中全部屬性名字,一個(gè)枚舉 -
getCreationTime
:返回session的創(chuàng)建時(shí)間 -
getId
:獲取會(huì)話標(biāo)識(shí)符 -
getLastAccessedTime
:返回最后發(fā)送請(qǐng)求的時(shí)間 -
getMaxInactiveInterval
:返回session對(duì)象的生存時(shí)間單位千分之一秒 -
invalidate
:銷毀session對(duì)象 -
isNew
:每個(gè)請(qǐng)求是否會(huì)產(chǎn)生新的session對(duì)象 -
removeAttribute
:刪除指定名字的屬性 -
setAttribute
:設(shè)定指定名字的屬性值
application對(duì)象
application對(duì)象代表當(dāng)前的應(yīng)用程序锌妻。存在于服務(wù)器的內(nèi)存空間中代乃。應(yīng)用一旦啟動(dòng)便會(huì)自動(dòng)生成一個(gè)application對(duì)象。如果應(yīng)用沒(méi)有被關(guān)閉从祝,此application對(duì)象便一直會(huì)存在襟己。直到應(yīng)用被關(guān)閉application的生命周期比session更長(zhǎng)。
應(yīng)用:為多個(gè)用戶共享全局信息牍陌。比如當(dāng)前的在線人數(shù)等。
application對(duì)象方法:
-
getAttribute
:獲取應(yīng)用對(duì)象中指定名字的屬性值 -
getAttributeNames
:獲取應(yīng)用對(duì)象中所有屬性的名字,一個(gè)枚舉 -
getInitParameter
:返回應(yīng)用對(duì)象中指定名字的初始參數(shù)值 -
getServletInfo
:返回Servlet編譯器中當(dāng)前版本信息 -
setAttribute
:設(shè)置應(yīng)用對(duì)象中指定名字的屬性值
config對(duì)象
config對(duì)象表示當(dāng)前jsp程序的配置信息,一般項(xiàng)目中员咽,jsp被用作模版技術(shù)毒涧,也就是位于表示層
而位于表示層的jsp文件一般是不需要配置信息的所以此對(duì)象在jsp程序中其實(shí)很少使用.
config對(duì)象是servletConfig類的一個(gè)實(shí)例。
config對(duì)象方法:
-
getServletContext
:返回所執(zhí)行的Servlet的環(huán)境對(duì)象 -
getServletName
:返回所執(zhí)行的Servlet的名字 -
getInitParameter
:返回指定名字的初始參數(shù)值 -
getInitParameterNames
:返回該JSP中所有的初始參數(shù)名,一個(gè)枚舉
page對(duì)象
page對(duì)象有點(diǎn)類似與java編程中的this指針贝室,他指向了當(dāng)前jsp頁(yè)面本身契讲。
page對(duì)象是java.lang.object類的一個(gè)實(shí)例
page對(duì)象的方法:
-
toString
:將當(dāng)前項(xiàng)目的信息打印出來(lái) -
getClass
:返回當(dāng)前的object類 -
hashCode
:返回page對(duì)象的hashCode值 -
equals
:用于比較對(duì)象是否與當(dāng)前對(duì)象相同
exception對(duì)象
exception對(duì)象表示jsp引擎在執(zhí)行代碼時(shí)拋出的異常
如果想要使用exception對(duì)象,那么需要配置編譯指令的isErrorPage
屬性為true
即在頁(yè)面指令中設(shè)置:<%@pageisErrorPage=“true”%>
pageContext對(duì)象
pageContetx對(duì)象是jsp頁(yè)面中所有對(duì)象功能的最大集成著滑频。
使用他可以訪問(wèn)所有的jsp內(nèi)置對(duì)象捡偏。
pageContext對(duì)象方法:
-
forward
:重定向到另一頁(yè)面或Servlet組件 -
getAttribute
:獲取某范圍中指定名字的屬性值 -
findAttribute
:按范圍搜索指定名字的屬性 -
removeAttribute
:刪除某范圍中指定名字的屬性 -
setAttribute
:設(shè)定某范圍中指定名字的屬性值 -
getException
:返回當(dāng)前異常對(duì)象 -
getRequest
:返回當(dāng)前請(qǐng)求對(duì)象 -
getResponse
:返回當(dāng)前響應(yīng)對(duì)象 -
getServletConfig
:返回當(dāng)前頁(yè)面的ServletConfig對(duì)象 -
getServletContext
:返回所有頁(yè)面共享的ServletContext對(duì)象 -
getSession
:返回當(dāng)前頁(yè)面的會(huì)話對(duì)象
JSP中四大域?qū)ο?/h2>
分類:
-
ServletContextcontext
域
-
HttpServletRequetrequest
域
-
HttpSessionsession
域--前三種在學(xué)習(xí)Servlet時(shí)就能接觸到
-
PageContextpage
域--jsp學(xué)習(xí)的
ServletContextcontext
域HttpServletRequetrequest
域HttpSessionsession
域--前三種在學(xué)習(xí)Servlet時(shí)就能接觸到PageContextpage
域--jsp學(xué)習(xí)的域?qū)ο蟮淖饔?
- 保存數(shù)據(jù)
- 獲取數(shù)據(jù)
- 共享數(shù)據(jù)
保存數(shù)據(jù):
pageContext.setAttribute("內(nèi)容");
//默認(rèn)保存到page域
pageContext.setAttribute("內(nèi)容",域范圍常量);
//保存到指定域中
四個(gè)域常量:
PageContext.PAGE_SCOPE
PageContext.REQUEST_SCOPE
PageContext..SESSION_SCOPE
PageContext.APPLICATION_SCOPE
獲取數(shù)據(jù):
pageContext.getAttribute("內(nèi)容");
pageContext.getAttribute("name",域范圍常量);
自動(dòng)在四個(gè)域中搜索數(shù)據(jù)pageContext.findAttribute("內(nèi)容");
在四個(gè)域中自動(dòng)搜索數(shù)據(jù),順序:
page域->request域->session域->application域(context域)
域作用范圍:
-
page
域:只能在當(dāng)前jsp頁(yè)面使用(當(dāng)前頁(yè)面) -
request
域:只能在同一個(gè)請(qǐng)求中使用(轉(zhuǎn)發(fā)) -
session
域:只能在同一個(gè)會(huì)話(session對(duì)象)中使用(私有的) -
context
域:只能在同一個(gè)web應(yīng)用中使用(全局的)