在servlet中,域?qū)ο笠还灿?個(gè),分別是上下文域 application、會(huì)話域 session、請(qǐng)求域 request,以上3個(gè)域?qū)ο蠖际窃趙eb開(kāi)發(fā)中,用來(lái)做存取值操作的,當(dāng)我們?cè)谟驅(qū)ο笾写嬷抵?在域?qū)ο箐N(xiāo)毀之前,都可以從域?qū)ο笾袑⑽覀兇娴闹到o取出來(lái)。
存值: setAttribute(String key,Object value)
取值:getAttribute(String key) Object
移除值:removeAttribute(String key)
域?qū)ο髲膭?chuàng)建到銷(xiāo)毀的全過(guò)程
● application
創(chuàng)建:服務(wù)器啟動(dòng)的時(shí)候,服務(wù)器會(huì)自動(dòng)的為我們創(chuàng)建一個(gè)上下文對(duì)象
銷(xiāo)毀:服務(wù)器關(guān)閉
● session
創(chuàng)建:執(zhí)行request.getSession(),如果當(dāng)前瀏覽器和服務(wù)器之間沒(méi)有一個(gè)有效的會(huì)話,以上代碼會(huì)為我們創(chuàng)建出來(lái)一個(gè)session對(duì)象
銷(xiāo)毀:
關(guān)閉服務(wù)器
1、執(zhí)行代碼session.invalidate()
2、session.setMaxInactiveInterval(10)
超過(guò)session的空閑失效時(shí)間,session對(duì)象自動(dòng)銷(xiāo)毀
3、如果上述代碼沒(méi)有設(shè)置
默認(rèn)30分鐘session對(duì)象自動(dòng)銷(xiāo)毀
conf/web.xml 5xx 30
4、關(guān)閉瀏覽器,session對(duì)象不銷(xiāo)毀的,但是存儲(chǔ)在瀏覽器上的JSESSIONID銷(xiāo)毀了
關(guān)閉瀏覽器后,此時(shí)是這樣一種情況,服務(wù)器中的session對(duì)象還在,瀏覽器上的JSESSIONID銷(xiāo)毀了
當(dāng)瀏覽器訪問(wèn)服務(wù)器執(zhí)行request.getSession的時(shí)候,由于JSESSIONID銷(xiāo)毀,就已經(jīng)失去了有效的會(huì)話,以上代碼會(huì)為我們創(chuàng)建出來(lái)一個(gè)新的會(huì)話.老會(huì)話會(huì)隨著空閑失效時(shí)間的到來(lái)自動(dòng)銷(xiāo)毀
● request
創(chuàng)建:當(dāng)請(qǐng)求訪問(wèn)到項(xiàng)目,那么服務(wù)器會(huì)為我們的項(xiàng)目創(chuàng)建出來(lái)一個(gè)request對(duì)象
銷(xiāo)毀:當(dāng)servlet將請(qǐng)求處理完畢,準(zhǔn)備響應(yīng)的時(shí)候,request對(duì)象自動(dòng)銷(xiāo)毀
從圖上看,我們的每一次請(qǐng)求和響應(yīng),都是request對(duì)象創(chuàng)建以及銷(xiāo)毀全過(guò)程
從以上生命周期分析我們域?qū)ο蟮娜≈捣秶荷舷挛挠?> session域 > request域
不切換瀏覽器的情況下,分析以上案例結(jié)果,request域不能夠取值,其他域能夠取值