cookie技術和session技術

2022-10-11 05:21:12 字數 4053 閱讀 9778

一,cookie技術

cookie是由伺服器端生成,傳送給瀏覽器,瀏覽器會將cookie的key/value儲存到某個目錄下的文字檔案內,下次請求同一**時就傳送該cookie給伺服器前提是瀏覽器設定為啟用cookie。

1,伺服器端向客戶端傳送乙個cookie

1)建立cookie:

cookie cookie = new cookie(string cookiename,string cookievalue);

示例:cookie cookie = new cookie("username","zhangsan");

那麼該cookie會以響應頭的形式傳送給客戶端:

注意:cookie不能儲存中文

void setmaxage(int

seconds)

cookie.setmaxage(

int seconds); ---時間秒

注意:如果不設定持久化時間,cookie會儲存在瀏覽器的記憶體中,瀏覽器關閉 cookie資訊銷毀(會話級別的cookie),如果設定持久化時間,cookie資訊會被持久化到瀏覽器的磁碟檔案裡

示例:cookie.setmaxage(10*60);

設定cookie資訊在瀏覽器的磁碟檔案中儲存的時間是10分鐘,過期瀏覽器 自動刪除該cookie資訊

3)設定cookie的攜帶路徑:

void setpath(string path)

cookie的有效路徑指的是cookie允許被訪問的路徑。設定路徑,以及子路徑都被允許訪問。

注意:如果不設定攜帶路徑,那麼該cookie資訊會在訪問產生該cookie的 web資源所在的路徑都攜帶cookie資訊

* 常見設定:cookie.setpath("/")指的是當前tomcat下的所有的web專案都可以訪問這個cookie;

* cookie.setpath("/web"):指的是/web路徑及其子路徑可以訪問這個cookie;

4)向客戶端傳送cookie:

response.addcookie(cookie cookie);

5)刪除客戶端的cookie:

通常情況下,如果瀏覽器中的cookie儲存的太多,我們需要手動清除瀏覽器中的cookie。這是通過客戶端的技術刪除儲存在瀏覽器中的cookie。servlet中沒有專門提供api去刪除cookie。我們可以通過以下方式刪除cookie;

讓cookie消失的幾種方法

1,沒有設定最大存活時間的cookie,瀏覽器關閉後cookie立即消失;

2,使用瀏覽器手動清除cookie;

3,瀏覽器禁用cookie;

4,通過servlet技術將cookie刪除;

2,伺服器端怎麼接受客戶端攜帶的cookie

1)通過request獲得所有的cookie:

cookie cookies = request.getcookies();

2)遍歷cookie陣列,通過cookie的名稱獲得我們想要的cookie

for

(cookie cookie : cookies)

}

二、session技術

session是伺服器為每個訪問這個伺服器的客戶端使用者建立的乙個容器。這個容器中儲存的資料能夠在多個request之間實現共享。而且,這個容器只屬於當前這個使用者。

在會話過程中,只有客戶端(瀏覽器)和伺服器兩個角色。所以,session容器標識的不是使用者,而是當前使用者正在使用的瀏覽器。瀏覽器與伺服器交流是通過給伺服器傳送請求實現的,瀏覽器的每次請求中如果都有乙個相同的標記用來標記session。伺服器就能夠識別這個使用者了。

1,獲得session物件

此方法會獲得專屬於當前會話的session物件,如果伺服器端沒有該會話的session 物件會建立乙個新的session返回,如果已經有了屬於該會話的session直接將已有的session返回(實質就是根據jsessionid判斷該客戶端是否在伺服器上已經存在 session了)

2.怎樣向session中訪問資料(session也是乙個域物件)

session也是儲存資料的區域物件,所以session物件也具有如下幾個方法:

void setattribute(string name,object value)將乙個物件與乙個名稱關聯,之後儲存到session中

object getattribute( string name)通過名稱獲取session中的資料

void removeattribute(string name)根據指定名稱刪除session中的資料

string sessionid = session.getid();獲取session的id

session.setattribute(string name,object obj);

session.getattribute(string name);

session.removeattribute(string name);

session.getid()

3,session物件的生命週期

建立:第一次執行request.getsession()時建立

後續的request.getsession()只能獲取已建立的session。

銷毀:1)伺服器(非正常)關閉時

如果正常關閉伺服器,session的資訊,會被序列化硬碟中,儲存在tomcat的work\catalina\localhost\web,當tomcat下一次啟動的時候,會把session載入回來。序列化的檔案會被銷毀。

2)session過期/失效(預設30分鐘)

問題:時間的起算點 從何時開始計算30分鐘?

從不操作伺服器端的資源開始計時

可以在工程的web.xml中進行配置

30

手動配置session的存活時間

將session-config這段配置複製到自己專案中的web.xml中。修改存活時間為1,測試生存時間。

3)手動銷毀session

session.invalidate();

//

建立session

system.out.println("session1被建立了。session1="+session1); //

手動銷毀session

session1.invalidate();

system.out.println("session1被銷毀了......................."); //

再次獲取session

4)瀏覽器關閉後,session持久化方案

瀏覽器關閉後,jsessionid就消失來,再次訪問的時候又重新建立了乙個新的session物件。這樣,是比較消耗資源的。如何在瀏覽器關閉後,session能夠繼續存在呢?

session之所以重新建立是因為,瀏覽器關閉後jessionid這個cookie消失了。所以,就不能夠在標識這個session了。如果能夠讓cookie不消失(或者存活時間長點)就能夠在很長一段時間內把這個標識傳送給servlet了。此時servlet就能夠找到之前建立的session物件了。

Python中cookie和session的異同點

cookie和session的異同點 共同點 1.cookie和session都是用來儲存資料的 2.cookie和session都可以設定有效時間 不同點 1.cookie是儲存在瀏覽器客戶端,session是儲存在服務端 2.session相對cookie來說更更安全 3.session依賴於c...

Flask中的cookie和session淺知

cookie技術的必要性 cookie的實現原理 cookie時用來將使用者資訊儲存在客戶端的技術,使用者資訊會被存放於客戶端的計算機中。cookie儲存到客戶端之後,當使用者再次通過瀏覽器發起對伺服器的請求的時候,瀏覽器就會自動帶著此 相關的cookie資訊來請求資料庫。而cookie資訊裡面儲存...

HTTP協議之Cookie和Session

http是無狀態協議,那麼服務端如何識別特定的客戶端呢?注 無狀態指http協議自身不對請求和響應之間的通訊狀態進行儲存。對傳送過的請求和響應都不做持久化處理 即不做任何儲存 每次http請求的時候,客戶端都會傳送相應的cookie資訊到服務端。實際上大多數的應用都是用cookie來實現sessio...