在servlet中,域?qū)ο笠还灿?個(gè),分別是上下文域 application、會話域 session、請求域 request,以上3個(gè)域?qū)ο蠖际窃趙eb開發(fā)中,用來做存取值操作的,當(dāng)我們在域?qū)ο笾写嬷抵?在域?qū)ο箐N毀之前,都可以從域?qū)ο笾袑⑽覀兇娴闹到o取出來。
存值: setAttribute(String key,Object value)
取值:getAttribute(String key) Object
移除值:removeAttribute(String key)
域?qū)ο髲膭?chuàng)建到銷毀的全過程
● application
創(chuàng)建:服務(wù)器啟動的時(shí)候,服務(wù)器會自動的為我們創(chuàng)建一個(gè)上下文對象
銷毀:服務(wù)器關(guān)閉
● session
創(chuàng)建:執(zhí)行request.getSession(),如果當(dāng)前瀏覽器和服務(wù)器之間沒有一個(gè)有效的會話,以上代碼會為我們創(chuàng)建出來一個(gè)session對象
銷毀:
關(guān)閉服務(wù)器
1、執(zhí)行代碼session.invalidate()
2、session.setMaxInactiveInterval(10)
超過session的空閑失效時(shí)間,session對象自動銷毀
3、如果上述代碼沒有設(shè)置
默認(rèn)30分鐘session對象自動銷毀
conf/web.xml 5xx 30
4、關(guān)閉瀏覽器,session對象不銷毀的,但是存儲在瀏覽器上的JSESSIONID銷毀了
關(guān)閉瀏覽器后,此時(shí)是這樣一種情況,服務(wù)器中的session對象還在,瀏覽器上的JSESSIONID銷毀了
當(dāng)瀏覽器訪問服務(wù)器執(zhí)行request.getSession的時(shí)候,由于JSESSIONID銷毀,就已經(jīng)失去了有效的會話,以上代碼會為我們創(chuàng)建出來一個(gè)新的會話.老會話會隨著空閑失效時(shí)間的到來自動銷毀

● request
創(chuàng)建:當(dāng)請求訪問到項(xiàng)目,那么服務(wù)器會為我們的項(xiàng)目創(chuàng)建出來一個(gè)request對象
銷毀:當(dāng)servlet將請求處理完畢,準(zhǔn)備響應(yīng)的時(shí)候,request對象自動銷毀

從圖上看,我們的每一次請求和響應(yīng),都是request對象創(chuàng)建以及銷毀全過程
從以上生命周期分析我們域?qū)ο蟮娜≈捣秶荷舷挛挠?> session域 > request域
不切換瀏覽器的情況下,分析以上案例結(jié)果,request域不能夠取值,其他域能夠取值
