天天看點

Cookie和Session使用與差別

Cookie:

Cookie是早起的會話跟蹤技術,它将使用者的資訊儲存在用戶端浏覽器上;

cookie儲存的資訊類型有限,隻能儲存字元串資訊,而且涉及到中文等還要進行字元編碼,因為中文使用的是unicode編碼,而英文使用的是ASCII編碼,為了防止亂碼的出現,在使用cookie儲存中文資訊的時候要進行相應的編碼,具體的實作方法詳情請看《tomcat伺服器運作cookie時出錯的詳解》,在此不再詳述;

伺服器通過cookie使用response.addcookie()想用戶端設定cookie,通過使用request.getcookie()方法擷取從用戶端送出過來的所有cookie;

cookie有一定的生命周期,預設的maxage的值為-1,這時用戶端浏覽器不會永久的儲存cookie;

cookie不提供修改和删除cookie的方法,隻能添加同名的cookie把原來的cookie覆寫掉;如果要删除某一個cookie,隻需要聲明一個同名的cookie,并且把它的maxage設定為0,并添加到response中覆寫原來的cookie即可;

Session:

session是在cookie的基礎上發展而來的會話跟蹤技術,session把資訊放在伺服器上,為了響應的快速一些,是以伺服器把session放在記憶體中,是以session中的資訊不能太複雜了,一面給伺服器帶來太大的壓力;

session中可以存放各種各樣的java object,這一點要比cookie強很多;

session使用setsession()方法把資訊放在session中,響應的通過getsession()方法從session中擷取資訊;session在使用者第一次通路伺服器的時候建立,為了防止記憶體的溢出,伺服器會删除長時間不用的session;

在servlet中通過request.getsession()得到session對象;還可以通過request.getsession(boolean bool)方法得到session對象,所不同的是在不存在session對象的時候該方法會根據參數的不同自動建立session對象.

在jsp中内置的有session對象,不需要手動擷取,也可以在page指令中設定session是否可用,值為true或false