小編給大家分享一下jsp的四大作用域有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、重慶網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序設(shè)計(jì)、集團(tuán)成都定制網(wǎng)站等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶(hù);涵蓋的客戶(hù)類(lèi)型包括:成都門(mén)窗定制等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶(hù)的一致稱(chēng)贊!首先要聲明一點(diǎn),所謂“作用域”就是“信息共享的范圍”,也就是說(shuō)一個(gè)信息能夠在多大的范圍內(nèi)有效。4個(gè)JSP內(nèi)置對(duì)象的作用域分別為:application、session、request、page 。
推薦課程:Java教程。
application 作用域
如果把變量放到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)行手工刪除,它們就一直可以使用。
Object getAttribute(String name) //從application中獲取信息;
void setAttribute(String name,Object value) //向application作用域中設(shè)置信息。
session作用域
如果把變量放到session里,就說(shuō)明它的作用域是session,它的有效范圍是當(dāng)前會(huì)話。所謂當(dāng)前會(huì)話,就是指從用戶(hù)打開(kāi)瀏覽器開(kāi)始,到用戶(hù)關(guān)閉瀏覽器這中間的過(guò)程。
Object HttpSession.getAttribute(String name) //從session中獲取信息。
void HttpSession.setAttribute(String name,Object value)//向session中保存信息。
HttpSessionHttpServletRequest.getSessio() //獲取當(dāng)前請(qǐng)求所在的session的對(duì)象。
session從瀏覽器發(fā)出第一個(gè)HTTP請(qǐng)求即可認(rèn)為會(huì)話開(kāi)始。但結(jié)束就不好判斷了,因?yàn)闉g覽器關(guān)閉時(shí)并不會(huì)通知服務(wù)器,所以只能通過(guò)如下這種方法判斷:如果一定的時(shí)間內(nèi)客戶(hù)端沒(méi)有反應(yīng),則認(rèn)為會(huì)話結(jié)束。Tomcat的默認(rèn)值為120分鐘,但這個(gè)值也可以通過(guò)HttpSession的setMaxInactiveInterval()方法來(lái)設(shè)置:
void setMaxInactiveInterval(int interval)
如果想主動(dòng)讓會(huì)話結(jié)束,例如用戶(hù)單擊“注銷(xiāo)”按鈕的時(shí)候,可以使用 HttpSession 的 invalidate()方法,用于強(qiáng)制結(jié)束當(dāng)前session:void invalidate()
Session刪除的時(shí)間是:
1) Session超時(shí):超時(shí)指的是連續(xù)一定時(shí)間服務(wù)器沒(méi)有收到該Session所對(duì)應(yīng)客戶(hù)端的請(qǐng)求,并且這個(gè)時(shí)間超過(guò)了服務(wù)器設(shè)置的Session超時(shí)的大時(shí)間。
2) 程序調(diào)用HttpSession.invalidate()
3) 服務(wù)器關(guān)閉或服務(wù)停止
注意:
1) 訪問(wèn)*.html的靜態(tài)資源因?yàn)椴粫?huì)被編譯為Servlet,也就不涉及session的問(wèn)題。
2) 當(dāng)JSP頁(yè)面沒(méi)有顯式禁止session的時(shí)候,在打開(kāi)瀏覽器第一次請(qǐng)求該jsp的時(shí)候,服務(wù)器會(huì)自動(dòng)為其創(chuàng)建一個(gè)session,并賦予其一個(gè)sessionID,發(fā)送給客戶(hù)端的瀏覽器。
3) 由于session會(huì)消耗內(nèi)存資源,因此,如果不打算使用session,應(yīng)該在所有的JSP中關(guān)閉它。
4) session不會(huì)應(yīng)該瀏覽器的關(guān)閉而刪除,只能通過(guò)以上三種方式刪除。
session存放在哪里?-----------服務(wù)器端的內(nèi)存中。
Request作用域
request里的變量可以跨越forward前后的兩頁(yè)。但是只要刷新頁(yè)面,它們就重新計(jì)算了。
請(qǐng)求轉(zhuǎn)發(fā):servlet. getRequestDispatcher("new.jsp").forward(req,resp);
注意:
1、轉(zhuǎn)發(fā)是服務(wù)器行為,而重定向是客戶(hù)端行為。
2、無(wú)論在服務(wù)器上如何轉(zhuǎn)發(fā),瀏覽器地址欄中顯示的仍然是最初那個(gè)Servlet的地址。
page作用域
page對(duì)象的作用范圍僅限于用戶(hù)請(qǐng)求的當(dāng)前頁(yè)面
request和page的生命周期都是短暫的,它們之間的區(qū)別:一個(gè)request可以包含多個(gè)page頁(yè)(include,forward及filter)。
以上是jsp的四大作用域有哪些的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!