現(xiàn)在有很多二階段的同學(xué),學(xué)習(xí)完了session后還是對(duì)session 的使用不是很清楚,那么我們就一起來(lái)看看這個(gè)神密的家伙吧。
首先我們先來(lái)了解一下什么是session,其實(shí)session就是一塊在服務(wù)器端(如果連服務(wù)器和客戶端也分不清的話就問(wèn)問(wèn)帶課老師吧
)開(kāi)辟的內(nèi)存空間。session的作用是來(lái)跟蹤用戶的操作狀態(tài)(有些同學(xué)正在郁悶中什么是跟蹤用戶操作狀態(tài)?),我們舉個(gè)例子,比如:服務(wù)器端要知道一個(gè)當(dāng)前網(wǎng)站有多少用戶在線。我們知道一個(gè)用戶就一個(gè)客戶端,那么也就是說(shuō)服務(wù)器端要知道有多少客戶端正在訪問(wèn)本網(wǎng)站,這樣服務(wù)器端必然要跟蹤每一個(gè)客戶端的狀態(tài),那么服務(wù)器是通過(guò)什么跟蹤的呢?又是怎么跟蹤的呢?哈哈,其實(shí)這個(gè)問(wèn)題很簡(jiǎn)單,比如張三下班后打天電腦是今天第一次訪問(wèn)清華IT太原校區(qū)的網(wǎng)站(http://www.qinghuait.net 順便宣傳一下),張三的電腦向清華IT太原校區(qū)的網(wǎng)站發(fā)出了請(qǐng)求,清華IT太原校區(qū)網(wǎng)站我現(xiàn)在要訪問(wèn)你,這時(shí)呢清華IT太原校區(qū)的網(wǎng)站說(shuō)請(qǐng)出示你的證件,張三的電腦傻了問(wèn)“證件???”這時(shí)清華IT太原校區(qū)的網(wǎng)站說(shuō)是今天第一次來(lái)訪吧,張三的電腦說(shuō)是啊,清華IT太原校區(qū)的網(wǎng)站說(shuō)那就對(duì)了看在你誠(chéng)實(shí)的份上給你一個(gè)證件吧(這里的證件就是我們說(shuō)的sessionID,sessionID:是32位的字母和數(shù)字的組合是全地球唯一的,因?yàn)閟essionID是唯一的所以它的作用是用來(lái)區(qū)分每個(gè)客戶端的,此ID是在session被創(chuàng)建時(shí)產(chǎn)生的,而session我們看到了是在第一次訪問(wèn)網(wǎng)站時(shí)就會(huì)被建立。sessionID會(huì)隨著應(yīng)答一起發(fā)到客戶端并存放到客戶端的內(nèi)存中,這塊客戶端的內(nèi)存就是我們經(jīng)常說(shuō)的cookie,下次用戶發(fā)出請(qǐng)求時(shí),也會(huì)帶著sessionID發(fā)送,這樣服務(wù)器看到sessionID后到內(nèi)存尋找,找到了就使用此內(nèi)存中的數(shù)據(jù),否則視為第一次訪問(wèn)本網(wǎng)站),不過(guò)這個(gè)證件的有效期只有15分鐘,這里的有效期15分鐘,就是我們說(shuō)的session過(guò)期時(shí)間,什么是session過(guò)期時(shí)間呢?是這樣的,我們想一下我們第一次訪問(wèn)一個(gè)網(wǎng)站,這時(shí)網(wǎng)站會(huì)給我們分配一個(gè)sessionID,而我們只是打開(kāi)了這個(gè)首頁(yè)后,出去玩了再也沒(méi)有訪問(wèn)過(guò)本網(wǎng)站的其它頁(yè)面內(nèi)容,我們是不是還在占用著網(wǎng)絡(luò)資源呀,占用著sessionID。那么這時(shí)怎么辦呢?其實(shí)網(wǎng)站服務(wù)器很聰明的它會(huì)在你從第一次訪問(wèn)后就開(kāi)始計(jì)算時(shí)間比如張三打開(kāi)了清華IT太原校區(qū)的網(wǎng)站首頁(yè)這時(shí)清華IT太原校區(qū)網(wǎng)站的服務(wù)器就開(kāi)始計(jì)時(shí)了 1秒,2秒,3秒,4秒,5秒,6秒...在2分鐘的時(shí)候張三在首頁(yè)上點(diǎn)擊了一條新聞,這時(shí)清華IT太原校區(qū)網(wǎng)站的服務(wù)器知道后將剛才記的2分鐘清空為0這時(shí)又開(kāi)始了1秒,2秒,3秒,4秒,5秒,6秒...的計(jì)時(shí),至到計(jì)時(shí)時(shí)間達(dá)到了15分鐘也就是session過(guò)期時(shí)間,這時(shí)清華IT太原校區(qū)網(wǎng)站服務(wù)器會(huì)認(rèn)為這個(gè)用戶15分鐘都沒(méi)有訪問(wèn)過(guò)我了可能己經(jīng)關(guān)機(jī)出去玩了,清華IT太原校區(qū)網(wǎng)站服務(wù)器會(huì)將這個(gè)用戶在服務(wù)器開(kāi)辟的內(nèi)存空間釋放掉,那么對(duì)應(yīng)內(nèi)存的sessionID也就被收回了,等待新來(lái)的用戶使用,這樣我們說(shuō)一個(gè)session就被銷毀了,那么到這大家應(yīng)該有點(diǎn)感覺(jué)了吧session的范圍有多大呀,是一個(gè)客戶端,一個(gè)客戶端對(duì)應(yīng)著一個(gè)session ; 而一個(gè)session能存活多長(zhǎng)時(shí)間有兩個(gè)方面一方面是看客戶端是否在session過(guò)期時(shí)間內(nèi)訪問(wèn)網(wǎng)站,這樣可以讓session存活時(shí)間延長(zhǎng),另一方面是設(shè)置的session過(guò)期時(shí)間是多長(zhǎng)。老師等一下:你前面說(shuō)可以設(shè)置session過(guò)期時(shí)間?沒(méi)錯(cuò)session過(guò)期時(shí)間我們可以手工設(shè)置,如果沒(méi)有設(shè)置就采取服務(wù)器默認(rèn)設(shè)置的(例如這里用Tomcat可以在Tomcat/config/web.xml中找到一段如下的代碼默認(rèn)為30分鐘:
首先我們先來(lái)了解一下什么是session,其實(shí)session就是一塊在服務(wù)器端(如果連服務(wù)器和客戶端也分不清的話就問(wèn)問(wèn)帶課老師吧

<session-config>
<session-timeout>30</session-timeout>
</session-config>
<session-timeout>30</session-timeout>
</session-config>
我們還可以在我們的項(xiàng)目中的WEB-INF/web.xml中寫(xiě)入上面的這段代碼,設(shè)置session過(guò)期時(shí)間),好了知道了這些大家想一個(gè)問(wèn)題:如果我們?cè)L問(wèn)了一個(gè)網(wǎng)站,這個(gè)網(wǎng)站為我們分配了一個(gè)session ,我們現(xiàn)在將IE瀏覽關(guān)閉掉,session會(huì)銷毀嗎?哈哈,想都不用再想了肯定不會(huì)。因?yàn)閟ession是存放在服務(wù)器端的session的銷毀只和過(guò)期時(shí)間有關(guān)系,再者客戶端關(guān)閉怎么會(huì)影響到服務(wù)器端呢!
這樣我們大概也就知道為什么我們?cè)谫?gòu)物車的時(shí)候都用session了吧,應(yīng)為一個(gè)session對(duì)應(yīng)著一個(gè)客戶端。我們可以將每個(gè)用戶買(mǎi)的商品存放到自己對(duì)應(yīng)的session中進(jìn)行管理這樣,就不會(huì)出現(xiàn),張三買(mǎi)的電視機(jī)要郝老師結(jié)賬了。
好了,我們今天就先介紹這么多吧,具體的怎么使用session我們下次介紹吧。原來(lái)打字這么累呀!!!!
