JSP實現瀏覽器關閉cookies情況下的會話管理_JSP編程

來源:互聯網
上載者:User
通常,會話管理是通過伺服器將 Session ID 作為一個 cookie 儲存在使用者的 網頁瀏覽器中來唯一標識每個使用者會話。如果瀏覽器不支援 cookies,或者將瀏覽器設定為不接受 cookies,我們可以通過 URL 重寫來實現會話管理。

  實質上 URL 重寫是通過向 URL 串連添加參數,並把 session ID 作為值包含在串連中。然而,為使這生效,你需要為你的 servlet 響應部分的每個串連添加 session ID 。

   把 session ID 加到一個串連可以使用一對方法來簡化:response.encodeURL() 使 URL 包含 session ID,如果你需要使用重新導向,可以使用 response.encodeRedirectURL () 來對 URL 進行編碼。

  encodeURL () 及 encodeRedirectedURL () 方法首先判斷 cookies 是否被瀏覽器支援;如果支援,則參數 URL 被原樣返回,session ID 將通過 cookies 來維持。

  來看下面的例子,兩個 JSP 檔案:hello1.jsp 和 hello2.jsp,及它們之間的影響。我們在 hello1.jsp 中簡單的建立一個會話,並在 session 中儲存一個對象執行個體。接著使用者可以點擊頁面的串連到達 hello2.jsp。在 hello2.jsp 中,我們從 session 中擷取原先放置的對象並顯示它的內容。注意,我們在 hello1.jsp 中調用了 encodeURL() 方法來獲得 hello2.jsp 的連結,使得在瀏覽器停用 cookies 的情況下,session ID 自動添加到 URL,hello2.jsp 仍能得到 session 對象。

  首先在啟用 cookies 的情況下運行。然後關閉對 cookie 的支援,重啟瀏覽器,再運行一次。每次你都可以看到會話管理在起作用,並能在頁之間傳遞資訊。

注意,如果你想讓這個例子能在關閉了 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發送
Copyright © 2000 www.jsper.com All rights reserved.
The catalog script used on this site was written by axeon
站務聯絡: [axeonOICQ:1684897 ICQ:75795533]
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.