溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

jsp九大內(nèi)置對(duì)象

發(fā)布時(shí)間:2020-08-11 22:37:19 來(lái)源:網(wǎng)絡(luò) 閱讀:431 作者:笑容掩飾愛(ài) 欄目:開(kāi)發(fā)技術(shù)

request           請(qǐng)求對(duì)象             類型 javax.servlet.ServletRequest        作用域 Request

response          響應(yīng)對(duì)象              類型 javax.servlet.SrvletResponse        作用域 Page

pageContext       頁(yè)面上下文對(duì)象        類型 javax.servlet.jsp.PageContext       作用域 Page

session           會(huì)話對(duì)象              類型 javax.servlet.http.HttpSession      作用域 Session

application       應(yīng)用程序?qū)ο?         類型 javax.servlet.ServletContext        作用域 Application

out               輸出對(duì)象              類型 javax.servlet.jsp.JspWriter         作用域 Page

config            配置對(duì)象              類型 javax.servlet.ServletConfig         作用域 Page

page              頁(yè)面對(duì)象              類型 javax.lang.Object                   作用域 Page

exception         例外對(duì)象              類型 javax.lang.Throwable                作用域 page

“exception” 對(duì)象則代表了JSP文件運(yùn)行時(shí)所產(chǎn)生的例外對(duì)象,此對(duì)象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用。


何為作用域

  先讓我們看看效果:

  大概流程是這樣的,我們?cè)L問(wèn)index.jsp的時(shí)候,分別對(duì)pageContext, request, session,application四個(gè)作用域中的變量進(jìn)行累加。(當(dāng)然先判斷這個(gè)變量是不是存在,如果變量不存在,則要把變量初始化成1)。計(jì)算完成后就從index.jsp執(zhí)行forward跳轉(zhuǎn)到test.jsp。在test.jsp里再進(jìn)行一次累加,然后顯示出這四個(gè)整數(shù)來(lái)。

  從顯示的結(jié)果來(lái)看,我們可以直觀的得出結(jié)論:

  page里的變量沒(méi)法從index.jsp傳遞到test.jsp。只要頁(yè)面跳轉(zhuǎn)了,它們就不見(jiàn)了。

  request里的變量可以跨越forward前后的兩頁(yè)。但是只要刷新頁(yè)面,它們就重新計(jì)算了。

  session和application里的變量一直在累加,開(kāi)始還看不出區(qū)別,只要關(guān)閉瀏覽器,再次重啟瀏覽器訪問(wèn)這頁(yè),session里的變量就重新計(jì)算了。

    application里的變量一直在累加,除非你重啟tomcat,否則它會(huì)一直變大。

作用域規(guī)定的是變量的有效期限

  如果把變量放到pageContext里,就說(shuō)明它的作用域是page,它的有效范圍只在當(dāng)前jsp頁(yè)面里。

  從把變量放到pageContext開(kāi)始,到j(luò)sp頁(yè)面結(jié)束,你都可以使用這個(gè)變量。

  如果把變量放到request里,就說(shuō)明它的作用域是request,它的有效范圍是當(dāng)前請(qǐng)求周期。

  所謂請(qǐng)求周期,就是指從http請(qǐng)求發(fā)起,到服務(wù)器處理結(jié)束,返回響應(yīng)的整個(gè)過(guò)程。在這個(gè)過(guò)程中可能使用forward的方式跳轉(zhuǎn)了多個(gè)jsp頁(yè)面,在這些頁(yè)面里你都可以使用這個(gè)變量。

  如果把變量放到session里,就說(shuō)明它的作用域是session,它的有效范圍是當(dāng)前會(huì)話。

  所謂當(dāng)前會(huì)話,就是指從用戶打開(kāi)瀏覽器開(kāi)始,到用戶關(guān)閉瀏覽器這中間的過(guò)程。這個(gè)過(guò)程可能包含多個(gè)請(qǐng)求響應(yīng)。也就是說(shuō),只要用戶不關(guān)瀏覽器,服務(wù)器就有辦法知道這些請(qǐng)求是一個(gè)人發(fā)起的,整個(gè)過(guò)程被稱為一個(gè)會(huì)話(session),而放到會(huì)話中的變量,就可以在當(dāng)前會(huì)話的所有請(qǐng)求里使用。

  如果把變量放到application里,就說(shuō)明它的作用域是application,它的有效范圍是整個(gè)應(yīng)用。

  整個(gè)應(yīng)用是指從應(yīng)用啟動(dòng),到應(yīng)用結(jié)束。我們沒(méi)有說(shuō)“從服務(wù)器啟動(dòng),到服務(wù)器關(guān)閉”,是因?yàn)橐粋€(gè)服務(wù)器可能部署多個(gè)應(yīng)用,當(dāng)然你關(guān)閉了服務(wù)器,就會(huì)把上面所有的應(yīng)用都關(guān)閉了。

  application作用域里的變量,它們的存活時(shí)間是最長(zhǎng)的,如果不進(jìn)行手工刪除,它們就一直可以使用。

  與上述三個(gè)不同的是,application里的變量可以被所有用戶共用。如果用戶甲的操作修改了application中的變量,用戶乙訪問(wèn)時(shí)得到的是修改后的值。這在其他scope中都是不會(huì)發(fā)生的,page, request,session都是完全隔離的,無(wú)論如何修改都不會(huì)影響其他人的數(shù)據(jù)。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI