cookie與session的區別

例如在會話的過程中,需要記住用用戶購買的商品,且在用戶結賬的時候,可以記下購買的商品,並且進行結賬.

 在會話過程中就必要要解決這個問題.那麼其中就必須要掌握cookie 和session


我們可以通過servlet技術來保存數據

     ServletContext,request   ;這個可以保存數據但是數據只是在一次存儲中用到,顯然和我們要解決的問題是不可以的


引進:Cookie 和session 技術,這兩個技術都是用來 保存 用戶購買商品信息的據說(這是她最常用到的地方)

//下面以購買商品這個爲例子進行講解

Cookie技術

    Cookie 是一個 基於客戶端的技術 ,她是將 用戶購買的商品信息 保存在用戶自己的 瀏覽器中,那麼只要用戶購買了就會保存下來,

只有在最終用戶 點擊結賬(即提交到服務器裏頭去) 時候 ,這樣就這可以結賬了

cookie之細枝末節:

一個cookie 只能標識一種信息; 每個cookie 至少 含有 一個標識該信息的名稱(NAME) 和 設置值(VALUE);
    且 name 信息是 cookie的 唯一 具有識別的,換句話說 你想找到這個cookie 那麼就找這個name值;
一個 WEB站點 ,一次可以給 WEB瀏覽器 傳遞多個Cookie;一個 web瀏覽器 也可以存儲多個 WEB站點 傳遞過來的Cookie;
一個 瀏覽器 最多可以存放300個cookie,一個 站點 最多可以發送 20個cookie; 且每個傳送的cookie的大小限制爲4KB;
如果創建一個cookie,將她發送到瀏覽器,那麼她默認是一個會話級別的(即存儲在瀏覽器裏頭),當用戶關掉瀏覽器時,她就給釋放了,要是想永久存放(即將瀏覽器裏的cookie存放到磁盤裏頭),那麼需要用到maxAge技術,並且這裏要傳入一個以毫秒爲單位的時間.(既然將到了設置永久cookie,那麼問題來了怎麼刪除永久cookie呢??)
  刪除永久cookie:將cookie的最大失效設置爲0,注意了,刪除cookie時,path必須一致,否則就無法刪除.



Session是一個 基於服務器的技術 ,她是直接將購買的商品直接保存到服務器端 , 針對用戶的瀏覽器不同而不同(這是因爲 每次session對有做一個id),

當用戶點擊結賬的時候, 此時根據瀏覽器的信息(即session的生成ID) ,瀏覽器帶過來的信息 ,再再找到 購買的商品,從給用戶結賬



session的創建: 

request.getSession();這個創建的方法自己在創建是會做一個判斷,判斷這個session是否在當前的瀏覽器中已將創建過的session對象; 要是已將存在,那麼她這裏的對象就是session對象的引用;

實現session域的數據共享:獲得session對象後,再通過調用session的api-----setAttribute(),getAttribute(),removeAttribute()


注意,不同的瀏覽器,創建的session對象是不同;這是因爲 在訪問的時候,回寫的 響應中靠session的id號來實現,在下次訪問的時候,找到對應的session對象.


     session的原理到底是怎麼樣的呢?
首先通過回寫cookie對象實現 name=value     jsessionid=session的id號 ;
     
     在關閉瀏覽器之後,實現再次打開瀏覽器時,任可以找到 之前的 session對象?
        通過 設置cookie的有效期


        通過上面的操作可以關閉了瀏覽器後,還可以找到session對象;  


    
    要是瀏覽器禁用了cookie,要怎麼獲得session對象呢?
           通過url重寫的方法實現,在url地址後拼接上  jsessionid=session的id號 




總結
cookie和session 都可以存放數據,她們有什麼區別呢?
     cookie是將用戶的數據寫到用戶自己的瀏覽器中;
     session是將用戶的數據寫到用戶獨佔的session中(服務器端);
 

發佈了26 篇原創文章 · 獲贊 38 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章