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