在servlet中,域對象一共有3個,分別是上下文域 application、會話域 session、請求域 request,以上3個域對象都是在web開發中,用來做存取值操作的,當我們在域對象中存值之后,在域對象銷毀之前,都可以從域對象中將我們存的值給取出來。
存值: setAttribute(String key,Object value)
取值:getAttribute(String key) Object
移除值:removeAttribute(String key)
域對象從創建到銷毀的全過程
● application
創建:服務器啟動的時候,服務器會自動的為我們創建一個上下文對象
銷毀:服務器關閉
● session
創建:執行request.getSession(),如果當前瀏覽器和服務器之間沒有一個有效的會話,以上代碼會為我們創建出來一個session對象
銷毀:
關閉服務器
1、執行代碼session.invalidate()
2、session.setMaxInactiveInterval(10)
超過session的空閑失效時間,session對象自動銷毀
3、如果上述代碼沒有設置
默認30分鐘session對象自動銷毀
conf/web.xml 5xx 30
4、關閉瀏覽器,session對象不銷毀的,但是存儲在瀏覽器上的JSESSIONID銷毀了
關閉瀏覽器后,此時是這樣一種情況,服務器中的session對象還在,瀏覽器上的JSESSIONID銷毀了
當瀏覽器訪問服務器執行request.getSession的時候,由于JSESSIONID銷毀,就已經失去了有效的會話,以上代碼會為我們創建出來一個新的會話.老會話會隨著空閑失效時間的到來自動銷毀
● request
創建:當請求訪問到項目,那么服務器會為我們的項目創建出來一個request對象
銷毀:當servlet將請求處理完畢,準備響應的時候,request對象自動銷毀
從圖上看,我們的每一次請求和響應,都是request對象創建以及銷毀全過程
從以上生命周期分析我們域對象的取值范圍:上下文域 > session域 > request域
不切換瀏覽器的情況下,分析以上案例結果,request域不能夠取值,其他域能夠取值