Session是服務(wù)器端技術(shù),利用這個(gè)技術(shù),服務(wù)器在運(yùn)行時(shí)可以為每一個(gè)用戶的瀏覽器創(chuàng)建一個(gè)其獨(dú)享的session對(duì)象,注意是默認(rèn)情況下,一個(gè)瀏覽器獨(dú)占一個(gè)session,由于session為用戶瀏覽器獨(dú)享,所以用戶在訪問服務(wù)器的web資源時(shí),可以把各自數(shù)據(jù)存放在各自的session中,當(dāng)用戶再去訪問服務(wù)器的其他web資源時(shí),其他web資源再從用戶各自的session中取出數(shù)據(jù)為用戶服務(wù)。
Session和Cookie的主要區(qū)別:
Cookie技術(shù)是客戶端技術(shù),是由服務(wù)器將用戶的數(shù)據(jù)寫回給用戶瀏覽器的。
Session技術(shù)是服務(wù)器端技術(shù),是把用戶的數(shù)據(jù)寫到服務(wù)器為用戶所創(chuàng)建的獨(dú)享的Session對(duì)象中,但Session是基于Cookie的。
Session對(duì)象由服務(wù)器創(chuàng)建,這跟Cookie不一樣。編程人員可以通過request請求對(duì)象的getSession()方法獲取Session對(duì)象。
注意,Session一旦創(chuàng)建,是會(huì)存活無操作情況(或者瀏覽器關(guān)閉)下30分鐘,這是由服務(wù)器(如Tomcat)來指定的。當(dāng)我們關(guān)閉瀏覽器后,因?yàn)镾ession是基于cookie的,因此Session是存在的,只是我們可能無法再使用到(要看cookie是否還能取到)。
那么我們以一個(gè)簡單的Session例子來說明,創(chuàng)建兩個(gè)Servlet:分別命名為ServletDemo1和ServletDemo2。
在ServletDemo1中的代碼如下:
HttpSession session = request.getSession(); String data = "message form SessionDemo"; session.setAttribute("data", data);