簡介
HTTP協議是無狀態的。從客戶端到服務器的連接可以在每個請求之後關閉。但是一般需要把一些客戶端信息從一個頁面傳送給另一個頁面。
無狀態的根本原因是:浏覽器和服務器使用Socket通信,服務器將請求結果返回給浏覽器後,會關閉當前Socket連接。而且服務器會在處理頁面完畢後銷毀頁面對象。
應用層面的原因是:浏覽器和服務器之間通信都遵守HTTP協議。
Http協議是無狀態的,不會記得上次和網頁“發生了什麼。服務器不記得上次給了浏覽器什麼。
對網站造成的影響:如果用戶錄入了一些信息,當跳轉到下一個頁面時,數據丟失,再也不能獲得那些數據。
如果要知道上一次的狀態信息,我們就得把這個狀態信息記錄在某個地方:
a.服務器端
b.浏覽器端(客戶端)
c. 表單元素中—如:隱藏域<input type=“hidden” />(Http報文)
在保存狀態的各種方式中,主要區別是:狀態是存儲在客戶端還是服務器上,下表列出了各種狀態管理技術以及狀態保持有效的時間。
先將狀態管理的五種方式基本概念放在一起,方便比較記憶。
網絡上有一種劃分更細的方案,如下圖所示:
客戶端的狀態保持方案:ViewState、隱藏域、Cookies、控件狀態、URL查詢參數
服務端的狀態保持方案:Session(會話)、Application、Caching(緩存)、DataBase(數據庫)