JSP入門(mén)必知:域和對(duì)象

什么是內(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ì)象方法:

  • printprintln:輸出數(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í)的

域?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)用中使用(全局的)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市峡迷,隨后出現(xiàn)的幾起案子银伟,更是在濱河造成了極大的恐慌,老刑警劉巖绘搞,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彤避,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡夯辖,警方通過(guò)查閱死者的電腦和手機(jī)琉预,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蒿褂,“玉大人圆米,你說(shuō)我怎么就攤上這事∽乃ǎ” “怎么了娄帖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谴供。 經(jīng)常有香客問(wèn)我块茁,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任数焊,我火速辦了婚禮永淌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘佩耳。我一直安慰自己遂蛀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布干厚。 她就那樣靜靜地躺著李滴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛮瞄。 梳的紋絲不亂的頭發(fā)上所坯,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音挂捅,去河邊找鬼芹助。 笑死,一個(gè)胖子當(dāng)著我的面吹牛闲先,可吹牛的內(nèi)容都是我干的状土。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼伺糠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蒙谓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起训桶,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤累驮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后渊迁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體慰照,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年琉朽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毒租。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡箱叁,死狀恐怖墅垮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耕漱,我是刑警寧澤算色,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站螟够,受9級(jí)特大地震影響灾梦,放射性物質(zhì)發(fā)生泄漏峡钓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一若河、第九天 我趴在偏房一處隱蔽的房頂上張望能岩。 院中可真熱鬧,春花似錦萧福、人聲如沸拉鹃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)膏燕。三九已至,卻和暖如春悟民,著一層夾襖步出監(jiān)牢的瞬間坝辫,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工逾雄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阀溶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓鸦泳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親永品。 傳聞我的和親對(duì)象是個(gè)殘疾皇子做鹰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.學(xué)習(xí)內(nèi)容 JSP技術(shù)入門(mén)和常用指令 JSP的內(nèi)置對(duì)象&標(biāo)簽介紹 EL表達(dá)式&EL的內(nèi)置對(duì)象 2.JSP技術(shù)入門(mén)...
    WendyVIV閱讀 2,138評(píng)論 1 18
  • JSP總結(jié)(經(jīng)典) day1 JSP 定義: 1)Java Server Page, Java EE 組件,本...
    java日記閱讀 3,457評(píng)論 0 13
  • 一、jsp介紹 jsp作用jsp全稱java server pages(java服務(wù)器頁(yè)面),本質(zhì)是一個(gè)servl...
    圣賢與無(wú)賴閱讀 1,251評(píng)論 0 14
  • 一炕桨、JSP基礎(chǔ) 1.1什么是JSP JSP(Java ServerPage)是Java服務(wù)器端動(dòng)態(tài)頁(yè)面技術(shù)饭尝。是su...
    晨星資源閱讀 1,155評(píng)論 0 6
  • 九大對(duì)象: 內(nèi)置對(duì)象(又叫隱含對(duì)象,有9個(gè)內(nèi)置對(duì)象):不需要預(yù)先聲明就可以在腳本代碼和表達(dá)式中隨意使用 1-out...
    李honghai閱讀 2,244評(píng)論 0 1