日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

会话(cookie的使用,路径和Session的工作原理,使用)

發(fā)布時(shí)間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 会话(cookie的使用,路径和Session的工作原理,使用) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.狀態(tài)管理----Cookie

1.1 為什么需要狀態(tài)管理

?HTTP協(xié)議是無(wú)狀態(tài)的,不能保存每次提交的信息,即當(dāng)服務(wù)器返回與請(qǐng)求相對(duì)應(yīng)的應(yīng)答之后,這次事務(wù)的所有信息就丟掉了。
如果用戶發(fā)來(lái)一個(gè)新的請(qǐng)求,服務(wù)器無(wú)法知道它是否與上次的請(qǐng)求有聯(lián)系。
對(duì)于那些需要多次提交數(shù)據(jù)才能完成的Web操作,比如登錄來(lái)說(shuō),就成問(wèn)題了。

1.1.1 什么是狀態(tài)管理(會(huì)話管理)

指的是一個(gè)客戶端的瀏覽器到WEB服務(wù)器之間連續(xù)發(fā)生的一系列請(qǐng)求和響應(yīng)的過(guò)程。

(相當(dāng)于打電話)從打開瀏覽器訪問(wèn)某個(gè)網(wǎng)站到關(guān)閉該網(wǎng)站的過(guò)程我們稱為一次會(huì)話。

1.1.2狀態(tài)管理的兩種常見的模式;

客戶端狀態(tài)管理技術(shù):將狀態(tài)存放在客戶端。代表性的是Cookie技術(shù)(瀏覽器)

服務(wù)器狀態(tài)管理技術(shù):將狀態(tài)存放在服務(wù)器中。代表的是Session.

1.2.Cookie應(yīng)用

1.2.1什么是Cookie

Cookie的創(chuàng)建是由服務(wù)器創(chuàng)建,服務(wù)端調(diào)用相關(guān)的方法將Cookie響應(yīng)給客戶端

一個(gè)Cookie只能標(biāo)識(shí)一種信息,它至少含有一個(gè)標(biāo)識(shí)該信息的名稱(name)和設(shè)置值(value)。

說(shuō)明:Cookie 是由鍵值對(duì)方式存儲(chǔ)數(shù)據(jù)? name:jack

一個(gè)WEB站可以給一個(gè)WEB瀏覽器發(fā)送多個(gè)Cookie,一個(gè)WEB瀏覽器也可以存儲(chǔ)多個(gè)WEB站點(diǎn)

提供的Cookie。

1.2.2Cookie的使用

步驟:

1.創(chuàng)建Cookie

Cookie cookie=new Cookie(“name”,“jack");//鍵值對(duì)

2.設(shè)置Cookie的路徑

cookie.setPath("/")

3.設(shè)置Cookie的生存時(shí)間

cookie.setMaxAge(-1)//關(guān)閉瀏覽器結(jié)束

4.把Cookie響應(yīng)到瀏覽器

response.addCookie(cookie);

1.2.3如何查詢Cookie

//獲取客戶端的Cookie 存儲(chǔ)多個(gè),要用數(shù)組

Cookie [] cookies=request.getCookies();

ifcookies!=null)

{

for(Cookie cookie : cookies){

if(cookie.getName().equals(name))

{

? String value=cookie.getValue();

System.out.println(value);

}

}

}

1.2.4如何修改Cookie

只要保證Cookie名和路徑一致就行

//先得到指定的Cookie

1.2.5如何刪除Cookie

?1.3 Cookie的生存周期

cookies.setMaxAge(-1);//設(shè)置生成時(shí)間

括號(hào)的取值:

>0有效期,單位是秒

=0失效,用于刪除Cookie

<0 內(nèi)存存儲(chǔ),關(guān)閉瀏覽器失效

1.4 Cookie的編碼與解碼(8.0版本及之前的版本存儲(chǔ)中文需要編碼與解碼)

中文和英文字符不同,中文屬于Unicode字符,在內(nèi)存中占用4個(gè)字符,而英文屬于ASCII字符,內(nèi)存中只占2個(gè)字節(jié)。Cookie中使用Unicode字符時(shí)需要對(duì)Unicode字符進(jìn)行編碼,否則會(huì)出現(xiàn)亂碼。編碼可以使用java.net.URLEncoder類的encode(String str,String encoding)方法,解碼使用java.net.URLDecoder類的decode(String str,String encoding)方法

代碼:

運(yùn)行結(jié)果:

1.5 Cookie的路徑問(wèn)題

1.5.1什么是Cookie的路徑問(wèn)題

?

1.5.2 發(fā)送Cookie的條件

瀏覽器在發(fā)送請(qǐng)求之前,首先會(huì)根據(jù)請(qǐng)求url中的域名在cookie列表中找所有與當(dāng)前域名一樣的cookie,然后再根據(jù)指定的路徑進(jìn)行匹配,如果當(dāng)前請(qǐng)求在域匹配的基礎(chǔ)上還與路徑匹配那么就會(huì)將所有匹配的cookie發(fā)送給服務(wù)器,這里要注意的是最大匹配和最小匹配問(wèn)題,有些cookie服務(wù)器在發(fā)送之前會(huì)有意擴(kuò)大當(dāng)前頁(yè)面cookie的匹配范圍,此時(shí)這些被擴(kuò)大范圍的cookie也會(huì)一起發(fā)送給服務(wù)器。
例如:cookie? 存在于: http://localhost:8080/day13_cookie_01/
?如果:發(fā)送的請(qǐng)求是:http://localhost:8080/day14/aServlet 的話,則不發(fā)送cookie到服務(wù)端
?? ??? ??? ??? ??? ? ? ? ? ? ? ? ? ? ? http://localhost:8080/day13_cookie_01/aServlet能發(fā)送cookie到服務(wù)器

1.6 Cookie的特點(diǎn)

優(yōu)點(diǎn):

1.可配置到期規(guī)則 Cookie 可以在瀏覽器會(huì)話結(jié)束時(shí)到期,或者可以在客戶端計(jì)算機(jī)上無(wú)限期存在,這取決于客戶端的到期規(guī)則。
2.不需要任何服務(wù)器資源 Cookie 存儲(chǔ)在客戶端并在發(fā)送后由服務(wù)器讀取。
3.簡(jiǎn)單性 Cookie 是一種基于文本的輕量結(jié)構(gòu),包含簡(jiǎn)單的鍵值對(duì)。
4.數(shù)據(jù)持久性 雖然客戶端計(jì)算機(jī)上 Cookie 的持續(xù)時(shí)間取決于客戶端上的 Cookie 過(guò)期處理和用戶干預(yù),

Cookie 通常是客戶端上持續(xù)時(shí)間最長(zhǎng)的數(shù)據(jù)保留形式
5.cookie.setMaxAge(時(shí)間);//單位秒

缺點(diǎn):

1.大小受到限制 大多數(shù)瀏覽器對(duì) Cookie 的大小有 4096 字節(jié)的限制,盡管在當(dāng)今新的瀏覽器和客戶端設(shè)備版本中,支持 8192 字節(jié)的 Cookie 大小已愈發(fā)常見。

2.安全性低,存在于客戶端

3.加密和解密需要額外的編碼,另外解碼和解密耗費(fèi)一定的時(shí)間而影響應(yīng)用程序的性能

2. 狀態(tài)管理---Session

2.1 Session概述

2.1.1什么是Session

Session用于跟蹤客戶的狀態(tài)。
Session指的是在一段時(shí)間內(nèi),單個(gè)客戶與Web服務(wù)器的一連串相關(guān)的交互過(guò)程。
在一個(gè)Session中,客戶可能會(huì)多次請(qǐng)求訪問(wèn)同一個(gè)網(wǎng)頁(yè),也有可能請(qǐng)求訪問(wèn)各種不同的服務(wù)器資源。

2.1.2 Session 工作原理

http:無(wú)狀態(tài) 無(wú)連接
session被用于表示一個(gè)持續(xù)的連接狀態(tài),在網(wǎng)站訪問(wèn)中一般指代客戶端瀏覽器的進(jìn)程從開啟到結(jié)束的過(guò)程。session其實(shí)就是網(wǎng)站分析的訪問(wèn)(visits)度量,表示一個(gè)訪問(wèn)的過(guò)程。
session的常見實(shí)現(xiàn)形式是會(huì)話cookie(session cookie),即未設(shè)置過(guò)期時(shí)間的cookie,這個(gè)cookie的默認(rèn)生命周期為瀏覽器會(huì)話期間,只要關(guān)閉瀏覽器窗口,cookie就消失了。
實(shí)現(xiàn)機(jī)制是當(dāng)用戶發(fā)起一個(gè)請(qǐng)求的時(shí)候,服務(wù)器會(huì)檢查該請(qǐng)求中是否包含sessionid,如果未包含,則系統(tǒng)會(huì)創(chuàng)造一個(gè)名為JSESSIONID的輸出 cookie返回給瀏覽器(只放入內(nèi)存,并不存在硬盤中),并將其以HashTable的形式寫到服務(wù)器的內(nèi)存里面;當(dāng)已經(jīng)包含sessionid是,服務(wù)端會(huì)檢查找到與該session相匹配的信息,如果存在則直接使用該sessionid,若不存在則重新生成新的 session。
這里需要注意的是session始終是有服務(wù)端創(chuàng)建的,并非瀏覽器自己生成的。 但是瀏覽器的cookie被禁止后session就需要用get方法的URL重寫的機(jī)制或使用POST方法提交隱藏表單的形式來(lái)實(shí)現(xiàn)

2.1.3 如何獲得Session

2.1.4 如何使用session綁定對(duì)象

使用HttpSession的setAttribute(屬性名,object)方法

2.1.5 如何刪除Session

使用HttpSession的invalidate方法

2.2 Session超時(shí)

2.2.1什么是Session超時(shí)

HttpSession的最后一程訪問(wèn)時(shí)間和當(dāng)前時(shí)間的差距大于了 指定的最大空閑時(shí)間,這時(shí)服務(wù)器

就會(huì)銷毀Session對(duì)象。默認(rèn)的空閑時(shí)間為30分鐘。

2.2.2如何修改Session的缺省時(shí)間限制

使用HttpSession的setMaxAge設(shè)置,單位為秒

2.2.3 Session 失效的幾種情況

1.超過(guò)了設(shè)置的超時(shí)時(shí)間

2.主動(dòng)調(diào)用了invalidate方法

3.服務(wù)器主動(dòng)或異常關(guān)閉

注意:瀏覽器關(guān)閉并不會(huì)讓Session失效

Session和Cookie的區(qū)別

1,session存放在服務(wù)器端,cookie存放在客戶端。

2,session會(huì)隨著會(huì)話的結(jié)束而關(guān)閉,cookie則存放在客戶端瀏覽器上長(zhǎng)期有效。

3,session保存的是對(duì)象,cookie保存的是字符串

4,存放在cookie里的信息容易泄露,通常只保存不重要的信息,重要的信息放在session中

轉(zhuǎn)載于:https://www.cnblogs.com/wanghuaying/p/9557210.html

總結(jié)

以上是生活随笔為你收集整理的会话(cookie的使用,路径和Session的工作原理,使用)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。