2011-05-26 89 views
3

考慮senario,我在Servlet中使用servlet和httpSession對象,並且我將一些數據添加到會話對象中,並將響應發送到客戶端,並且客戶端發送對下一個需要存儲在會話對象中的信息的servlet頁面的請求。現在,Web服務器如何能夠通知客戶端發出的請求,並與之前請求創建的特定會話對象相關聯?假設如果cookies被禁用?Web服務器如何在Java中識別請求?

回答

1

如果cookies不可用,會話跟蹤會在URL重寫時發生。服務器中的每個URL都應該使用會話標識進行編碼(HttpResponse.encodeURL()爲您完成此操作)。

另一種方法是通過隱藏字段爲會話ID。但是,這僅適用於POST請求。

+0

它(隱藏字段)也適用於GET請求,如果它們來自FORM或javascript,但也不適用於鏈接(在這種情況下,url-重寫或自己附加隱藏字段是一種選擇)。 – rurouni 2011-05-26 07:19:41

2

現在怎麼一個Web服務器可以能夠通知客戶端給出的請求與以前的請求創建perticular會話對象聯繫?

通常它使用cookie。該cookie存儲服務器與會話對象相關聯的唯一標識符。

看看您的瀏覽器cookie jar,您可能會發現一個爲您的網站存儲的jsessionid cookie。


還有其他技術用於實現使用URL重寫或隱藏表單字段的會話。儘管使用cookie是最常見和默認的技術。

0

餅乾是迄今爲止在Java Web服務器中實現http會話最流行的技術。除了cookie之外,還可以使用其他兩種技術 - url重寫(即向服務器生成的每個URL附加一些額外信息,這有助於識別會話)以及隱藏在表單中的隱藏字段,其值包含識別會話所需的信息。