Cookie與Session均可以進行會話跟蹤,可是實現的原理不太同樣。通常狀況下兩者都可以知足需求,但有時候不可使用Cookie,有時候不可使用Session。下面經過比較說明兩者的特色以及適用的場合。web
Cookie中只能保存ASCII字符串,若是須要存取Unicode字符或者二進制數據,須要進行UTF-8,GBK或者BASE64等方式的編碼。Cookie中也不能直接存取Java對象。若要存儲稍微複雜的信息,使用Cookie是比較困難的。跨域
而Session中能夠存取任何類型的數據,包括而不限於String、Integer、List、Map等。Session中也能夠直接保存Java Bean乃至任何Java類,對象等,使用起來很是方便。能夠把Session看作是一個Java容器類。瀏覽器
Cookie存儲在客戶端瀏覽器中,對客戶端是可見的,客戶端的一些程序可能會窺探、複製甚至修改Cookie中的內容。而Session存儲在服務器上,對客戶端是透明的,不存在敏感信息泄露的危險。安全
若是選用Cookie,比較好的辦法是,敏感的信息如帳號密碼等儘可能不要寫到Cookie中。最好是像Google、Baidu那樣將Cookie信息加密,提交到服務器後再進行解密,保證Cookie中的信息只有本身能讀得懂。而若是選擇Session就省事多了,反正是放在服務器上,Session裏任何隱私均可以。服務器
使用過Google的人都知道,若是登陸過Google,則Google的登陸消息長期有效。用戶沒必要每次訪問都從新登陸,Google會長久地記錄該用戶的登陸信息。要達到這種效果,使用Cookie會是比較好的選擇。只須要設置Cookie的maxAge屬性爲一個很大很大的數字或者Integer.MAX_VALUE就能夠了。Cookie的maxAge屬性支持這樣的效果。cookie
使用Session理論上也能實現這種效果。只要調用方法setMaxInactiveInterval(Integer. MAX_VALUE)不就能夠了麼。可是因爲Session依賴於名爲JSESSIONID的Cookie,而Cookie JSESSIONID的maxAge默認爲–1,只要關閉了瀏覽器該Session就會失效,所以Session不能實現信息永久有效的效果。使用URL地址重寫也不能實現。網絡
並且若是設置Session的超時時間過長,服務器累計的Session就會越多,越容易致使內存溢出。session
Session是保存在服務器端的,每一個用戶都會產生一個Session。若是併發訪問的用戶很是多,會產生很是多的Session,消耗大量的內存。所以像Google、Baidu、Sina這樣併發訪問量極高的網站,是不太可能使用Session來追蹤客戶會話的。併發
而Cookie保存在客戶端,不佔用服務器資源。若是併發瀏覽的用戶很是多,Cookie是很好的選擇。對於Google、Baidu、Sina來講,Cookie也許是惟一的選擇。dom
Cookie是須要客戶端瀏覽器支持的。若是客戶端禁用了Cookie,或者不支持Cookie,則會話跟蹤會失效。對於WAP上的應用,常規的Cookie就派不上用場了。
若是客戶端瀏覽器不支持Cookie,須要使用Session以及URL地址重寫。須要注意的是全部的用到Session程序的URL都要使用response.encodeURL(String URL)或者response.encodeRedirectURL(String URL)進行URL地址重寫,不然致使Session會話跟蹤失敗。對於WAP應用來講,Session+URL地址重寫也許是它惟一的選擇。
若是客戶端支持Cookie,則Cookie既能夠設爲本瀏覽器窗口以及子窗口內有效(把maxAge設爲–1),也能夠設爲全部瀏覽器窗口內有效(把maxAge設爲某個大於0的整數)。但Session只能在本瀏覽器窗口以及其子窗口內有效。若是兩個瀏覽器窗口互不相干,它們將使用兩個不一樣的Session。
Cookie支持跨域名訪問,例如將domain屬性設置爲「.helloweenvsfei.com」,則以「.helloweenvsfei.com」爲後綴的全部域名都可以訪問該Cookie。跨域名Cookie如今被普遍用在網絡中,例如Google、Baidu、Sina等。而Session則不會支持跨域名訪問。Session僅在他所在的域名內有效。
%注意:僅使用Cookie或者僅使用Session可能實現不了理想的效果。這時應該嘗試一下同時使用Cookie與Session。Cookie與Session的搭配使用在實際項目中會實現絢爛多姿的效果。
session (會話狀態)它是asp的內置對象,在服務器端存有用戶的我的信息,用來惟一表示一名用戶。當用戶登錄服務器的時候,系統會自動建立一個session,它可暫存用戶的首選項如登錄名,時間,狀態以及其餘實時信息(如購物車信息)。當session到期或你關閉瀏覽器,服務器將終止session。
cookie(網上信息數據快)它是asp內置對象request和response中的集合。它存在於你機器上的一個文件夾裏,每一個有惟一的名字標識。是服務器用於跟蹤用戶信息、存儲用戶信息的文件。它可含有web站點地址信息,用戶登錄次數信息,用戶登錄信息,cookie過時時間等內容。
當用戶每次鏈接服務器時,服務器能夠用response.cookies(名稱)=值的方式把session中全部的信息寫入cookie裏。服務器也可用request.cookies來訪問cookie中值的這種方式把cookie內容傳回服務器作處理並管理session對象。
因爲cookie和服務器和session聯繫緊密,因此當cookie關閉,session做用已不大了。