JSP完成瀏覽器關(guān)閉cookies情況下的會(huì)話管理
發(fā)表時(shí)間:2024-01-03 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]通常,會(huì)話管理是通過(guò)服務(wù)器將 Session ID 作為一個(gè) cookie 存儲(chǔ)在用戶的 Web 瀏覽器中來(lái)唯一標(biāo)識(shí)每個(gè)用戶會(huì)話。如果瀏覽器不支持 cookies,或者將瀏覽器設(shè)置為不接受 cookies,我們可以通過(guò) URL 重寫來(lái)實(shí)現(xiàn)會(huì)話管理。 實(shí)質(zhì)上 URL 重寫是通過(guò)向 URL 連接添...
通常,會(huì)話管理是通過(guò)服務(wù)器將 Session ID 作為一個(gè) cookie 存儲(chǔ)在用戶的 Web 瀏覽器中來(lái)唯一標(biāo)識(shí)每個(gè)用戶會(huì)話。如果瀏覽器不支持 cookies,或者將瀏覽器設(shè)置為不接受 cookies,我們可以通過(guò) URL 重寫來(lái)實(shí)現(xiàn)會(huì)話管理。
實(shí)質(zhì)上 URL 重寫是通過(guò)向 URL 連接添加參數(shù),并把 session ID 作為值包含在連接中。然而,為使這生效,你需要為你的 servlet 響應(yīng)部分的每個(gè)連接添加 session ID 。
把 session ID 加到一個(gè)連接可以使用一對(duì)方法來(lái)簡(jiǎn)化:response.encodeURL() 使 URL 包含 session ID,如果你需要使用重定向,可以使用 response.encodeRedirectURL () 來(lái)對(duì) URL 進(jìn)行編碼。
encodeURL () 及 encodeRedirectedURL () 方法首先判斷 cookies 是否被瀏覽器支持;如果支持,則參數(shù) URL 被原樣返回,session ID 將通過(guò) cookies 來(lái)維持。
來(lái)看下面的例子,兩個(gè) JSP 文件:hello1.jsp 和 hello2.jsp,及它們之間的影響。我們?cè)?hello1.jsp 中簡(jiǎn)單的創(chuàng)建一個(gè)會(huì)話,并在 session 中存儲(chǔ)一個(gè)對(duì)象實(shí)例。接著用戶可以點(diǎn)擊頁(yè)面的連接到達(dá) hello2.jsp。在 hello2.jsp 中,我們從 session 中獲取原先放置的對(duì)象并顯示它的內(nèi)容。注意,我們?cè)?hello1.jsp 中調(diào)用了 encodeURL() 方法來(lái)獲得 hello2.jsp 的鏈接,使得在瀏覽器停用 cookies 的情況下,session ID 自動(dòng)添加到 URL,hello2.jsp 仍能得到 session 對(duì)象。
首先在啟用 cookies 的情況下運(yùn)行。然后關(guān)閉對(duì) cookie 的支持,重啟瀏覽器,再運(yùn)行一次。每次你都可以看到會(huì)話管理在起作用,并能在頁(yè)之間傳遞信息。
注意,如果你想讓這個(gè)例子能在關(guān)閉了 cookies 的瀏覽器中工作,你的 JSP 引擎必須支持 URL 重寫。
hello1.jsp
<%@ page session="true" %>
<%
Integer num = new Integer(100);
session.putValue("num",num);
String url =response.encodeURL("hello2.jsp");
%>
<a href='<%=url%>'>hello2.jsp</a>
hello2.jsp
<%@ page session="true" %>
<%
Integer i= (Integer)session.getValue("num");
out.println("Num value in session is "+i.intValue());
%>
axeon于2000-08-03 11:05:38發(fā)送
Copyright © 2000 www.jsper.com All rights reserved.
The catalog script used on this site was written by axeon
站務(wù)聯(lián)系: [axeonOICQ:1684897 ICQ:75795533]