❶ java Web中的Cookie和Session對象有點不清楚,
session保存在伺服器端,只對當前打開的瀏覽器有效,當瀏覽器關閉時,session將自動被清空。安全性較高。
Cookie保存在客戶端,對當前的機器有效,Cookie不會自動被清空,除非手動清空。安全性較低。
session一般用於一次比較連續的操作,比如購物車(客戶會不停的買東西,買完付款關閉瀏覽器後就沒用了)。Cookie一般用於用戶登錄信息的保存,比如用戶名和密碼,省去校驗的過程,不過容易被人截獲,故而安全性比較低。
❷ java session和cookie的區別
它們是完全不一樣的東西
session 是服務端用來記錄客戶端訪問會話的一類對象 主體是保存在服務端的
cookie 是瀏覽器提供的一種數據存儲方式 可以通過名值對來存取一些字元數據 不受頁面刷新限制 即便JS對象銷毀了也不會消失
他們之間的關聯是建立在sessionID上的
每個瀏覽器在訪問服務端的時候 服務端會創建一個session對象 這個對象在服務端有一個唯一的ID
這個ID會發給客戶端
客戶端只要根據這個ID就能訪問服務端對應session對象
這個ID肯定都是JS獲取到的 但是刷新頁面JS對象都銷毀了 ID也就沒了
所以會使用cookie這種機制來保存SessionID
這就是他們之間的關聯
❸ java中session和cookie的區別
這些都是基礎知識,不過有必要做深入了解。先簡單介紹一下。
二者的定義:
當你在瀏覽網站的時候,WEB 伺服器會先送一小小資料放在你的計算機上,Cookie 會幫你在網站上所打的文字或是一些選擇,
都紀錄下來。當下次你再光臨同一個網站,WEB 伺服器會先看看有沒有它上次留下的 Cookie 資料,有的話,就會依據 Cookie
里的內容來判斷使用者,送出特定的網頁內容給你。 Cookie 的使用很普遍,許多有提供個人化服務的網站,都是利用 Cookie
來辨認使用者,以方便送出使用者量身定做的內容,像是 Web 介面的免費 email 網站,都要用到 Cookie。
具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。
同時我們也看到,由於採用伺服器端保持狀態的方案在客戶端也需要保存一個標識,所以session機制可能需要藉助於cookie機制
來達到保存標識的目的,但實際上它還有其他選擇。
cookie機制。正統的cookie分發是通過擴展HTTP協議來實現的,伺服器通過在HTTP的響應頭中加上一行特殊的指示以提示
瀏覽器按照指示生成相應的cookie。然而純粹的客戶端腳本如JavaScript或者VBScript也可以生成cookie。而cookie的使用
是由瀏覽器按照一定的原則在後台自動發送給伺服器的。瀏覽器檢查所有存儲的cookie,如果某個cookie所聲明的作用范圍
大於等於將要請求的資源所在的位置,則把該cookie附在請求資源的HTTP請求頭上發送給伺服器。
cookie的內容主要包括:名字,值,過期時間,路徑和域。路徑與域一起構成cookie的作用范圍。若不設置過期時間,則表示這
個cookie的生命期為瀏覽器會話期間,關閉瀏覽器窗口,cookie就消失。這種生命期為瀏覽器會話期的cookie被稱為會話cookie。
會話cookie一般不存儲在硬碟上而是保存在內存里,當然這種行為並不是規范規定的。若設置了過期時間,瀏覽器就會把cookie
保存到硬碟上,關閉後再次打開瀏覽器,這些cookie仍然有效直到超過設定的過期時間。存儲在硬碟上的cookie可以在不同的瀏
覽器進程間共享,比如兩個IE窗口。而對於保存在內存里的cookie,不同的瀏覽器有不同的處理方式
session機制。session機制是一種伺服器端的機制,伺服器使用一種類似於散列表的結構(也可能就是使用散列表)來保存信息。
當程序需要為某個客戶端的請求創建一個session時,伺服器首先檢查這個客戶端的請求里是否已包含了一個session標識
(稱為session id),如果已包含則說明以前已經為此客戶端創建過session,伺服器就按照session id把這個session檢索出來
使用(檢索不到,會新建一個),如果客戶端請求不包含session id,則為此客戶端創建一個session並且生成一個與此session相
關聯的session id,session id的值應該是一個既不會重復,又不容易被找到規律以仿造的字元串,這個session id將被在本次響應
中返回給客戶端保存。保存這個session id的方式可以採用cookie,這樣在交互過程中瀏覽器可以自動的按照規則把這個標識發送給
伺服器。一般這個cookie的名字都是類似於SEEESIONID。但cookie可以被人為的禁止,則必須有其他機制以便在cookie被禁止時
仍然能夠把session id傳遞回伺服器。
經常被使用的一種技術叫做URL重寫,就是把session id直接附加在URL路徑的後面。還有一種技術叫做表單隱藏欄位。就是伺服器
會自動修改表單,添加一個隱藏欄位,以便在表單提交時能夠把session id傳遞回伺服器。比如:
<form name="testform" action="/xxx">
<input type="hidden" name="jsessionid" value="!-145788764">
<input type="text">
</form>
實際上這種技術可以簡單的用對action應用URL重寫來代替。
cookie 和session 的區別:
1、cookie數據存放在客戶的瀏覽器上,session數據放在伺服器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙
考慮到安全應當使用session。
3、session會在一定時間內保存在伺服器上。當訪問增多,會比較佔用你伺服器的性能
考慮到減輕伺服器性能方面,應當使用COOKIE。
4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。
5、所以個人建議:
將登陸信息等重要信息存放為SESSION
其他信息如果需要保留,可以放在COOKIE中
❹ 關於Java里邊session和cookie的問題
伺服器壓力增大,有很多原因,不一定就是Session的事。
所有圖書列表信息,不知這個所有是指庫中存放的所有圖書,還是單指某一個人的所有圖書。如果是庫中的所有圖書,就應放入Application中或者一個靜態的全局變數中,而不是放在session中。
只考慮session的話,可以看看下面的建議:
session中,最佳處理是只放登錄後的人員基本信息,相關信息,再通過基本信息查詢,如果覺得從物理庫中查詢慢,可以採用內存資料庫,緩存不經常改變的信息。
❺ java session和cookie的區別
Session 會話 ,指的是客戶端與服務端通信時,服務端會通過自己的一些ID生成演算法,給當前這個客戶端分配一個ID,這個ID就是SessionID了,為什麼要這么做,因為有些數據可能需要緩存起來,下次客戶端訪問,就直接把這些內容給他,比如你上了一個論壇,登錄過後,系統就會分配給你SessionID,然後把你登陸過這件事暫時記錄下來,當你關閉瀏覽器,再次打開,再次訪問論壇,你發現自己是不需要再次登錄的,因為系統中有你的SessionID,他在短時間內都保持著你不需要重復登錄的邏輯。
那麼,它怎麼知道對面哪台電腦對應哪個SessionID呢??
答案就是用Cookie了,伺服器在生成sessionId的時候就告訴瀏覽器創建一個該會話的Cookie。Cookie直接保存在瀏覽器這邊,也就是你的客戶端部分,Cookie中保留一個SessionID數據,明白了吧。
Cookie 是客戶端使用的用來記錄短而關鍵的數據。
Session 是服務端記錄某些客戶端已經產生的行為數據。
但是這些並不是絕對的,只是這樣搭配確實比較合理好用,所以大家都這么用了。
❻ java中的cookie 和 session 是不是只能存入字元串不能存如數組和對象之類的東西
cookie是,session可以存數據和對象之類的東西,
它們存放的位置不同,cookie放入客戶端,session是放入服務端sessionId交給客戶端
❼ JavaWeb之Cookie和Session的區別
區別是:
1、cookie數據存放在客戶的瀏覽器上,session數據放在伺服器上。
2、cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙
考慮到安全應當使用session。
3、session會在一定時間內保存在伺服器上。當訪問增多,會比較佔用你伺服器的性能
考慮到減輕伺服器性能方面,應當使用cookie。
4、單個cookie保存的數據不能超過4k,很多瀏覽器都限制一個站點最多保存20個cookie。
❽ Java Socket實現HTTP客戶端來理解Session和Cookie的區別和聯系
在面試中 經常碰到請闡述session與cookie的區別與聯系,以及如何修改兩者的有效時間。
大家都知道,session是存儲在伺服器端的,cookie是存儲在客戶端的,session依賴於cookie,但是讓你說詳細點,你會嗎?我是不太清楚的,特意在網上找了很多資料,發現一篇不錯的文章,特整理歸納在此,供有需要的朋友查看。
具體來說cookie機制採用的是在客戶端保持狀態的方案。它是在用戶端的會話狀態的存貯機制,他需要用戶打開客戶端的cookie支持。cookie的作用就是為了解決HTTP協議無狀態的缺陷所作的努力.
而session機制採用的是一種在客戶端與伺服器之間保持狀態的解決方案。同時我們也看到,由於採用伺服器端保持狀態的方案在客戶端也需要保存一個標識,所以session機制可能需要藉助於cookie機制來達到保存標識的目的。而session提供了方便管理全局變數的方式
session是針對每一個用戶的,變數的值保存在伺服器上,用一個sessionID來區分是哪個用戶session變數,這個值是通過用戶的瀏覽器在訪問的時候返回給伺服器,當客戶禁用cookie時,這個值也可能設置為由get來返回給伺服器。
就安全性來說:當你訪問一個使用session 的站點,同時在自己機子上建立一個cookie,建議在伺服器端的SESSION機制更安全些.因為它不會任意讀取客戶存儲的信息。
正統的cookie分發是通過擴展HTTP協議來實現的,伺服器通過在HTTP的響應頭中加上一行特殊的指示以提示瀏覽器按照指示生成相應的cookie
從網路伺服器觀點看所有HTTP請求都獨立於先前請求。就是說每一個HTTP響應完全依賴於相應請求中包含的信息
狀態管理機制克服了HTTP的一些限制並允許網路客戶端及伺服器端維護請求間的關系。在這種關系維持的期間叫做會話(session)。
Cookies是伺服器在本地機器上存儲的小段文本並隨每一個請求發送至同一個伺服器。
session機制是一種伺服器端的機制,伺服器使用一種類似於散列表的結構(也可能就是使用散列表)來保存信息。
當程序需要為某個客戶端的請求創建一個session的時候,伺服器首先檢查這個客戶端的請求里是否已包含了一個session標識 - 稱為 session id,如果已包含一個session id則說明以前已經為此客戶端創建過session,伺服器就按照session id把這個 session檢索出來使用(如果檢索不到,可能會新建一個),如果客戶端請求不包含session id,則為此客戶端創建一個session並且生成一個與此session相關聯的session id,session id的值應該是一個既不會重復,又不容易被找到規律以仿造的字元串,這個 session id將被在本次響應中返回給客戶端保存。
在談論session機制的時候,常常聽到這樣一種誤解「只要關閉瀏覽器,session就消失了」。其實可以想像一下會員卡的例子,除非顧客主動對店家提出銷卡,否則店家絕對不會輕易刪除顧客的資料。對session來說也是一樣的,除非程序通知伺服器刪除一個session,否則伺服器會一直保留,程序一般都是在用戶做log off的時候發個指令去刪除session。然而瀏覽器從來不會主動在關閉之前通知伺服器它將要關閉,因此伺服器根本不會有機會知道瀏覽器已經關閉,之所以會有這種錯覺,是大部分session機制都使用會話cookie來保存session id,而關閉瀏覽器後這個 session id就消失了,再次連接伺服器時也就無法找到原來的session。如果伺服器設置的cookie被保存到硬碟上,或者使用某種手段改寫瀏覽器發出的HTTP請求頭,把原來的session id發送給伺服器,則再次打開瀏覽器仍然能夠找到原來的session。
恰恰是由於關閉瀏覽器不會導致session被刪除,迫使伺服器為seesion設置了一個失效時間,當距離客戶端上一次使用session的時間超過這個失效時間時,伺服器就可以認為客戶端已經停止了活動,才會把session刪除以節省存儲空間。
大家都知道,http是無狀態的協議,客戶每次讀取web頁面時,伺服器都打開新的會話,而且伺服器也不會自動維護客戶的上下文信息,那麼要怎麼才能實現網上商店中的購物車呢,session就是一種保存上下文信息的機制,它是針對每一個用戶的,變數的值保存在伺服器端,通過SessionID來區分不同的客戶,session是以cookie或URL重寫為基礎的,默認使用cookie來實現,系統會創造一個名為JSESSIONID的輸出cookie,我們叫做session cookie,以區別persistent cookies,也就是我們通常所說的cookie,注意session cookie是存儲於瀏覽器內存中的,並不是寫到硬碟上的,這也就是我們剛才看到的JSESSIONID,我們通常情是看不到JSESSIONID的,但是當我們把瀏覽器的cookie禁止後,web伺服器會採用URL重寫的方式傳遞Sessionid,我們就可以在地址欄看到sessionid=KWJHUG6JJM65HS2K6之類的字元串。
明白了原理,我們就可以很容易的分辨出persistent cookies和session cookie的區別了,網上那些關於兩者安全性的討論也就一目瞭然了,session cookie針對某一次會話而言,會話結束session cookie也就隨著消失了,而persistent cookie只是存在於客戶端硬碟上的一段文本(通常是加密的),而且可能會遭到cookie欺騙以及針對cookie的跨站腳本攻擊,自然不如session cookie安全了。
通常session cookie是不能跨窗口使用的,當你新開了一個瀏覽器窗口進入相同頁面時,系統會賦予你一個新的sessionid,這樣我們信息共享的目的就達不到了,此時我們可以先把sessionid保存在persistent cookie中,然後在新窗口中讀出來,就可以得到上一個窗口SessionID了,這樣通過session cookie和persistent cookie的結合我們就實現了跨窗口的session tracking(會話跟蹤)。
在一些web開發的書中,往往只是簡單的把Session和cookie作為兩種並列的http傳送信息的方式,session cookies位於伺服器端,persistent cookie位於客戶端,可是session又是以cookie為基礎的,明白的兩者之間的聯系和區別,我們就不難選擇合適的技術來開發web service了。純屬復制
❾ Cookie/Session詳解
cookie與session應用於互聯網中的一項基本技術——會話(用戶與客戶端的交互)跟蹤技術,用來跟蹤用戶的整個會話。簡單來說,cookie是通過在客戶端記錄信息確定用戶身份的,而session則通過在伺服器端記錄信息確定用戶身份。
cookie 定義
cookie是伺服器傳給客戶端的體積很小的純文本文件。客戶端請求伺服器,如果伺服器需要記錄該用戶狀態,就向客戶端瀏覽器發一個cookie。客戶端瀏覽器會把cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該cookie一同提交給伺服器。伺服器檢查該cookie,以此來辨認用戶狀態。
cookie機制
cookie的生成(java代碼舉例):
cookie會附在請求資源的HTTP請求頭上發送給伺服器,伺服器通過相應方法獲得該cookie。
cookie屬性
cookie的主要屬性包括:名字,值,過期時間,路徑和域:
應用場景
session 定義
session是另一種記錄客戶狀態的機制,不同的是cookie保存在客戶端瀏覽器中,而session保存在伺服器上。客戶端瀏覽器訪問伺服器的時候,伺服器把客戶端信息以某種形式記錄在伺服器上,這就是session。客戶端瀏覽器再次訪問時只需要從該session中查找該客戶的狀態就可以了。session相當於程序在伺服器上建立的一份用戶的檔案,用戶來訪的時候只需要查詢用戶檔案表就可以了。
session的生命周期與有效期
為了獲得更高的存取速度,伺服器一般把session放在內存里。每個用戶都會有一個獨立的session。如果session內容過於復雜,當大量客戶訪問伺服器時可能會導致內存溢出。session的使用雖然比cookie方便,但是過多的session存儲在伺服器內存中,會對伺服器造成壓力。因此,session里的信息應該盡量精簡。
session在用戶第一次訪問伺服器的時候自動創建。session生成後,只要用戶繼續訪問,伺服器就會更新Session的最後訪問時間,並維護該session。
由於有越來越多的用戶訪問伺服器,因此session也會越來越多。為防止內存溢出,伺服器會把長時間內沒有活躍的session從內存中刪除。這個時間就是session的超時時間。如果超過了超時時間沒訪問過伺服器,session就自動失效了。
session與cookie
雖然session保存在伺服器,但是它的正常運行仍然需要客戶端瀏覽器的支持。這是因為session需要使用cookie作為識別標志。HTTP協議是無狀態的,session不能依據HTTP連接來判斷是否為同一客戶,因此伺服器向客戶端瀏覽器發送一個名為SESSIONID的cookie,它的值為該Session的id。Session依據該cookie來識別是否為同一用戶。
對於不支持cookie的手機瀏覽器,有另一種解決方案:URL地址重寫。URL地址重寫的原理是將該用戶session的id信息重寫到URL地址中,伺服器能夠解析重寫後的URL獲取session的id。這樣即使客戶端不支持cookie,也可以使用session來記錄用戶狀態。
session的常用方法:
setAttribute(String attribute, Object value)
設置Session屬性。value參數可以為任何Java Object。通常為Java Bean。value信息不宜過大
String getAttribute(String attribute)
返回Session屬性
Enumeration getAttributeNames()
返回Session中存在的屬性名
void removeAttribute(String attribute)
移除Session屬性
String getId()
返回Session的ID。該ID由伺服器自動創建,不會重復
long getCreationTime()
返回Session的創建日期。返回類型為long,常被轉化為Date類型,例如:Date createTime = new Date(session.get CreationTime())
long getLastAccessedTime()
返回Session的最後活躍時間。返回類型為long
int getMaxInactiveInterval()
返回Session的超時時間。單位為秒。超過該時間沒有訪問,伺服器認為該Session失效
void setMaxInactiveInterval(int second)
設置Session的超時時間。單位為秒
boolean isNew()
返回該Session是否是新創建的
void invalidate()
使該Session失效
❿ JavaWeb之Cookie和Session的區別
cookie是HTML標準的,請求、返回,帶著的
session一般是通過cookie傳輸cookie 在伺服器上實現 的
~~~~~~~