JSP實(shí)現(xiàn)瀏覽器關(guān)閉cookies情況下的會(huì)話(huà)管理
更新時(shí)間:2006年10月13日 00:00:00 作者:
通常,會(huì)話(huà)管理是通過(guò)服務(wù)器將 Session ID 作為一個(gè) cookie 存儲(chǔ)在用戶(hù)的 Web 瀏覽器中來(lái)唯一標(biāo)識(shí)每個(gè)用戶(hù)會(huì)話(huà)。如果瀏覽器不支持 cookies,或者將瀏覽器設(shè)置為不接受 cookies,我們可以通過(guò) URL 重寫(xiě)來(lái)實(shí)現(xiàn)會(huì)話(huà)管理。
實(shí)質(zhì)上 URL 重寫(xiě)是通過(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ì)話(huà),并在 session 中存儲(chǔ)一個(gè)對(duì)象實(shí)例。接著用戶(hù)可以點(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ì)話(huà)管理在起作用,并能在頁(yè)之間傳遞信息。
注意,如果你想讓這個(gè)例子能在關(guān)閉了 cookies 的瀏覽器中工作,你的 JSP 引擎必須支持 URL 重寫(xiě)。
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]
實(shí)質(zhì)上 URL 重寫(xiě)是通過(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ì)話(huà),并在 session 中存儲(chǔ)一個(gè)對(duì)象實(shí)例。接著用戶(hù)可以點(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ì)話(huà)管理在起作用,并能在頁(yè)之間傳遞信息。
注意,如果你想讓這個(gè)例子能在關(guān)閉了 cookies 的瀏覽器中工作,你的 JSP 引擎必須支持 URL 重寫(xiě)。
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]
相關(guān)文章
實(shí)例講解JSP Model2體系結(jié)構(gòu)(上)
實(shí)例講解JSP Model2體系結(jié)構(gòu)(上)...2006-10-10JSP實(shí)現(xiàn)簡(jiǎn)單網(wǎng)頁(yè)計(jì)算器
這篇文章主要為大家詳細(xì)介紹了JSP實(shí)現(xiàn)簡(jiǎn)單網(wǎng)頁(yè)計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Javaweb工程運(yùn)行報(bào)錯(cuò)HTTP Status 404解決辦法
這篇文章主要介紹了Javaweb工程運(yùn)行報(bào)錯(cuò)HTTP Status 404解決辦法,文中通過(guò)示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07