會話跟蹤是一種靈活、輕便的機制,它使web上的狀態程式設計變為可能。
當使用者在同一**的多個頁面之間轉換時,根本無法確定是否是同乙個客戶,會話跟蹤技術就可以解決這個問題。
當乙個客戶在多個頁面間切換時,伺服器會儲存該使用者的資訊。
有四種方法可以實現會話跟蹤技術:url重寫、隱藏表單域、cookie、session。1)
.隱藏表單域:
,非常適合步需要大量資料儲存的會話應用。2)
.url
重寫:url
可以在後面附加引數,和伺服器的請求一起傳送,這些引數為名字
/值對。
見.cookie:
乙個 cookie
是乙個小的,已命名資料元素。伺服器使用
set-cookie
頭標將它作為
響應的一部分傳送到客戶端,客戶端被請求儲存
cookie
值,在對同一伺服器的後續請求使用乙個
cookie
頭標將之返回到伺服器。與其它技術比較,
cookie
的乙個優點是在瀏覽器會話結束後,甚至
在客戶端計算機重啟後它仍可以保留其值。 見:
.session
:使用
setattribute(string str,object obj)
方法將物件**到乙個會話
實現url重寫
url重寫在客戶端瀏覽器不支援cookie(下章介紹)的情況下使用的,它是客戶端瀏覽器請求伺服器時,url位址後面加上類似於 「sessionid=***」形式的引數,伺服器端通過獲取sessionid關鍵字來獲取會話值。
在程式第一次訪問伺服器端時,服務端並不能確認客戶端瀏覽器是否支援cookie。因此,當伺服器第一次發出請求時,服務端會預設採用url重寫,也就是將sessionid寫到url位址中傳遞。
核心**:string sessionid=request.getrequestedsessionid();
當客戶端傳送請求後,伺服器會根據提交給客戶端瀏覽器的資訊自動檢查客戶端是否啟用了cookie,如果啟用,將不再進行url重寫。如果沒有,則繼續使用url重寫。
通過response物件的encodeurl(string url)方法可以進行url重寫。
public string encodeurl(string url);
對包含sessionid的url進行編碼。如果不需要編碼,就直接返回這個url。
servlet引擎必須提供url編碼方法,因為在有些情況下,我們將不得不重寫url。
例如,在響應對應的請求中包含乙個有效的session,但是這個session不能被非url的(例如cookie)的手段來維持。
所以所有提供給servlet的url都應通過這個方法執行,這樣才能確保會話跟蹤能夠在所有瀏覽器中正常執行。
隱藏域和url重寫有著共同的優點:
它們在cookie被禁用或者根本不支援的情況下依舊能夠工作。
缺點:所有頁面必須是表單提交之後的結果,還有涉及許多冗長的處理工作。
四種會話跟蹤技術
suc.jsp中獲取資料 sring name request.getparameter username sring pwd request.getparameter userpwd 3 cookie方式 伺服器上,響應cookie給瀏覽器 string name request.getparam...
四種會話跟蹤技術
session,cookie,url重寫,掩藏表單域 為什麼會出現會話跟蹤技術 基於http是一種無狀態,無連線的協議,但是在現實生活中我們在瀏覽器中瀏覽的資訊或是傳送的請求都希望服務端能夠識別是否是同乙個人傳送的請求,這時引入了會話跟蹤技術。四種技術的區別 session和cookie是相互依存的...
四種會話跟蹤技術
suc.jsp中獲取資料 sring name request.getparameter username sring pwd request.getparameter userpwd 3 cookie方式 伺服器上,響應cookie給瀏覽器 string name request.getparam...