更新時間:2021年07月22日16時14分 來源:傳智教育 瀏覽次數(shù):
在日常生活中,從撥通電話到掛斷電話之間的一連串的你問我答的過程就是一個會話。Web應(yīng)用中的會話過程類似于生活中的打電話過程,它指的是一個客戶端(瀏覽器)與Web服務(wù)器之間連續(xù)發(fā)生的一系列請求和響應(yīng)過程,例如,一個用戶在某網(wǎng)站上的整個購物過程就是一個會話。
在打電話過程中,通話雙方會有通話內(nèi)容,同樣,在客戶端與服務(wù)器端交互的過程中,也會產(chǎn)生一些數(shù)據(jù)。例如,用戶甲和乙分別登錄了購物網(wǎng)站,甲購買了一個Nokia手機,乙購買了一個Ipad,當(dāng)這兩個用戶結(jié)賬時,Web服務(wù)器需要對用戶甲和乙的信息分別進行保存。在前面章節(jié)講解的對象中,HttpServletRequest對象和ServletContext對象都可以對數(shù)據(jù)進行保存,但是這兩個對象都不可行,具體原因如下:
● 客戶端請求Web服務(wù)器時,針對每次HTTP請求,Web服務(wù)器都會創(chuàng)建一個HttpServletRequest對象,該對象只能保存本次請求所傳遞的數(shù)據(jù)。由于購買和結(jié)賬是兩個不同的請求,因此,在發(fā)送結(jié)賬請求時,之前購買請求中的數(shù)據(jù)將會丟失。
● 使用ServletContext對象保存數(shù)據(jù)時,由于同一個Web應(yīng)用共享的是同一個ServletContext對象,因此,當(dāng)用戶在發(fā)送結(jié)賬請求時,由于無法區(qū)分哪些商品是哪個用戶所購買的,而會將該購物網(wǎng)站中所有用戶購買的商品進行結(jié)算,這顯然也是不可行的。
為了保存會話過程中產(chǎn)生的數(shù)據(jù),在Servlet技術(shù)中,提供了兩個用于保存會話數(shù)據(jù)的對象,分別是Cookie和Session。關(guān)于Cookie和Session的相關(guān)知識,將在下面的小節(jié)進行詳細講解。