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