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