我想知道,如何管理會話,如果客戶端瀏覽器禁用了Cookie功能..管理會話時broswer有禁用cookie
如果我要實現它在簡單的JSP - Servlet的,那麼怎麼可以去做 ?
在此先感謝...
我想知道,如何管理會話,如果客戶端瀏覽器禁用了Cookie功能..管理會話時broswer有禁用cookie
如果我要實現它在簡單的JSP - Servlet的,那麼怎麼可以去做 ?
在此先感謝...
<a href="<c:url value="page.jsp" />">link</a>
那樣容易。當cookies被禁用時,它會自動附加jsessionid
。
在Servlet方面,您需要HttpServletResponse#encodeURL()
或通常是Servlets- HttpServletResponse#encodeRedirectURL()
中的首選。
response.sendRedirect(response.encodeRedirectURL("page.jsp"));
沒有Cookie,你有兩個選擇。首先是通過Url傳遞sessionId。這需要在服務器上進行大量工作,因爲您發回的每個url都必須附加一個sessionId(通常以查詢字符串參數的形式)。例如:
/路徑/到/頁
成爲
/路徑/到/頁的SessionID = ASDFG-ASDFG-ASDFG-ASDFG-ASDFG
你會另一種選擇?可以將你通過http獲得的信息合併爲一個「唯一」鍵並創建自己的會話存儲桶。通過組合Http UserAgent,RemoteIp和RemoteXfip,您可以接近唯一地識別用戶,但不能保證此密鑰是100%唯一的。
每個URL必須使用response.encodeURL("page.jsp")
這將增加會話ID到每個URL的末尾,以便餅乾不必啓用不進行編碼。
請注意,您必須手動爲每個網址執行此操作才能使其工作。
有關更多信息,請參見this link。
如果我在我的瀏覽器中按F5第二個選項會發生什麼? – YOU 2009-11-25 10:33:21
由於用戶代理,remoteIp和remoteXfip都在所有請求中發送到服務器,因此您可以創建相同的「唯一」密鑰並查找您的會話存儲桶。這就是第二種解決方案的優點,它不需要對網站結構或網址結構進行任何更改 – LorenVS 2009-11-25 11:51:41