1. 程式人生 > >Cookie與session的區別及其常見面試問題

Cookie與session的區別及其常見面試問題

一、Cookie技術

Cookie技術是將使用者的資料儲存到客戶端的技術,我們分為兩方面學習:

第一,伺服器端怎樣將一個Cookie傳送到客戶端

第二,伺服器端怎樣接受客戶端攜帶的Cookie

1.伺服器端向客戶端傳送一個Cookie

   1)建立Cookie:

         Cookie cookie = new Cookie(String cookieName,String cookieValue);

      示例:

          Cookie cookie = new Cookie("username","zhangsan");

          那麼該cookie會以響應頭的形式傳送給客戶端:

                 注意:Cookie中不能儲存中文

     2)設定Cookie在客戶端的持久化時間:

          cookie.setMaxAge(int seconds); ---時間秒

          注意:如果不設定持久化時間,cookie會儲存在瀏覽器的記憶體中,瀏覽器關閉cookie資訊銷燬(會話級別的cookie),如果設定持久化時間,cookie資訊會被持久化到瀏覽器的磁碟檔案裡

         示例:

          cookie.setMaxAge(10*60);

             設定cookie資訊在瀏覽器的磁碟檔案中儲存的時間是10分鐘,過期瀏覽器 自動刪除該

cookie資訊

     3)設定Cookie的攜帶路徑:

        cookie.setPath(String path);

       注意:如果不設定攜帶路徑,那麼該cookie資訊會在訪問產生該cookie的web資源所在的路徑都攜帶cookie資訊

    示例:

     cookie.setPath("/WEB16");

     代表訪問WEB16應用中的任何資源都攜帶cookie

     cookie.setPath("/WEB16/cookieServlet");

     代表訪問WEB16中的cookieServlet時才攜帶cookie資訊 

   4)向客戶端傳送cookie:

         response.addCookie(Cookie cookie);

  5)刪除客戶端的cookie:

       如果想刪除客戶端的已經儲存的cookie資訊,那麼就使用同名同路徑的持久化時間為0cookie進行覆蓋即可

2.伺服器端怎麼接受客戶端攜帶的Cookie

   cookie資訊是以請求頭的方式傳送到伺服器端的:

   1)通過request獲得所有的Cookie:

       Cookie[] cookies = request.getCookies();

   2)遍歷Cookie陣列,通過Cookie的名稱獲得我們想要的Cookie

        for(Cookie cookie : cookies){

         if(cookie.getName().equal(cookieName)){

          String cookieValue = cookie.getValue();

      }

    }

二、Session技術

    Session技術是將資料儲存在伺服器端的技術,會為每個客戶端都建立一塊記憶體空間 儲存客戶的資料,但客戶端需要每次都攜帶一個標識ID去伺服器中尋找屬於自己的內 存空間。所以說Session的實現是基於Cookie,Session需要藉助於Cookie儲存客 戶的唯一性標識JSESSIONID

     在Session這我們需要學習如下三個問題:

          怎樣獲得屬於本客戶端的session物件(記憶體區域)?

           怎樣向session中存取資料(session也是一個域物件)?

            session物件的生命週期?

1.獲得Session物件

           HttpSession session = request.getSession();

      此方法會獲得專屬於當前會話的Session物件,如果伺服器端沒有該會話的Session 物件會建立一個新的Session返回,如果已經有了屬於該會話的Session直接將已有 Session返回(實質就是根據JSESSIONID判斷該客戶端是否在伺服器上已經存在 session了)

2.怎樣向session中存取資料(session也是一個域物件)

       Session也是儲存資料的區域物件,所以session物件也具有如下三個方法:

                session.setAttribute(String name,Object obj);

               session.getAttribute(String name);

               session.removeAttribute(String name);

3.Session物件的生命週期(面試題/筆試題)

         建立:第一次執行request.getSession()時建立

         銷燬:

          1)伺服器(非正常)關閉時

         2)session過期/失效(預設30分鐘)

         問題:時間的起算點 從何時開始計算30分鐘?

            從不操作伺服器端的資源開始計時(例如:當你訪問淘寶頁面時,點開頁面不動,

            第29分鐘再動一下頁面,就得重新計時30分鐘;當過了30分鐘,就失效了。

      可以在工程的web.xml中進行配置

            <session-config>

                <session-timeout>30</session-timeout>

        </session-config>

    3)手動銷燬session

        session.invalidate(); 

    作用範圍:

        預設在一次會話中,也就是說在,一次會話中任何資源公用一個session物件

    面試題:瀏覽器關閉,session就銷燬了? 

        不對,瀏覽器關閉和伺服器session銷燬沒有任何關係!

總結:

    購物過程中,cookie與session技術相結合圖:


    cookie購物流程圖:


    會話技術:

        Cookie技術:存到客戶端

   傳送cookie

        Cookie cookie = new Cookie(name,value)

        cookie.setMaxAge(秒)

        cookie.setPath()

        response.addCookie(cookie)

   獲得cookie

        Cookie[] cookies = request.getCookies();

        cookie.getName();

        cookie.getValue();

session的操作流程圖:


Session技術:存到伺服器端 藉助cookie儲存JSESSIONID

    HttpSession session = request.getSession();

    setAttribute(name,value);

    getAttribute(name);

session生命週期

    建立:第一次指定request.getSession();

    銷燬:伺服器關閉、session失效/過期、手動session.invalidate();

session作用範圍:預設一會話中

相關推薦

Cookiesession區別及其常見面試問題

一、Cookie技術Cookie技術是將使用者的資料儲存到客戶端的技術,我們分為兩方面學習:第一,伺服器端怎樣將一個Cookie傳送到客戶端第二,伺服器端怎樣接受客戶端攜帶的Cookie1.伺服器端向客戶端傳送一個Cookie   1)建立Cookie:         Co

Cookiesession區別

瀏覽器 cookie 通信設備 session與Cookie的區別此文章 來自烏龜運維wuguiyunwei.comQQ群:602183872主要區別:Cookie,也稱為HTTP cookie,Web cookie或瀏覽器cookie,是從網站發送到服務器並存儲在用戶的Web瀏覽器中的一小部分數

cookiesession區別聯絡原理

session機制是一種伺服器端的機制,伺服器使用一種類似於散列表的結構(也可能就是使用散列表)來儲存資訊。           當程式需要為某個客戶端的請求建立一個session時,伺服器首先檢查這個客戶端的請求裡是否已包含了一個session標識 (稱為session id),如果已包含則說明以前

cookiesession區別

分析 單個 session strong 使用 占用 安全性 服務器性能 存在 Cookie與session的區別;     01,Cookie的數據存放在客戶的瀏覽器上;session的數據存放在服務器上     02,Cookie不是很安全,別人可以分析存放在本地的co

CookieSession區別cookie被禁用,session是否還可以被使用?

什麼是Cookie,什麼是cookie會話機制?cookie與session的區別(這裡寫自定義目錄標題) cookie的內容主要包括:名字,值,過期時間,路徑和域。路徑與域一起構成cookie的作用範圍。 若不設定過期時間,則表示這個cookie的生命期為瀏覽器會話期間,關閉瀏

cookiesession區別聯絡

為什麼會有Cookie和Session的出現: TCP是無狀態的,當我們在訪問瀏覽器時,伺服器不會為客戶端儲存它上一次訪問的內容,每一次訪問都是獨立的。為了方便使用者的訪問,所以就出現了這兩個機制,使

【計算機網路】CookieSession區別

                                    Cookie與Session的區別 Cookie與Session是網路上儲存資料的兩種機制,理解這兩種方式的區別對我們提高網站執行的效率十分重要。 網站利用這兩種技術,來知道我們的登入保持狀態。比如說

淺談cookiesession區別

cookie才用的是在客戶端保持狀態的方案(它是在使用者端的會話狀態的存貯機制),前端也可以來設定他 所有瀏覽器都識別,並且會快取在瀏覽器中。 cookie是以key=value這種鍵值對的形式儲存,每個cookie之間一般用“;”分隔,大小一般不超過4KB 下面來說下cookie與session的區別

CookieSession區別

Cookie與Session的區別? 1.Cookie 與Session 都是會話技術,Cookie是執行在客戶端,Session執行在服務端。 2.Cookie有大小限制,以及瀏覽器在存Cookie的個數也有限制,Session是沒有大小限制和伺服器的記憶體大小有關。 3.Cookie有安全隱患,通過

軟體測試人員必備網路知識(二):什麼是SessionCookieSession之間有哪些區別

什麼是Session?Session什麼時候產生?    Session:在計算機中,尤其是在網路應用中,稱為“會話控制”。Session 物件儲存特定使用者會話所需的屬性及配置資訊。這樣,當用戶在應用程式的 Web 頁之間跳轉時,儲存在 Session 物件中的變數將不會

PHP CookieSession的使用區別

Cookie與Session Cookie和session是目前使用的兩種儲存機制。 cookie是從一個WEB頁到下一個WEB頁面的資料傳送方法,cookie儲存在客戶端。 Session是讓資料在頁面中持續有效的一個傳遞方法,session儲存在伺服器端。 掌握了coo

JSESSIONID、cookieSESSION區別和聯絡 同名JSESSIONID處理

在一些投票之類的場合,我們往往因為公平的原則要求每人只能投一票,在一些WEB開發中也有類似的情況,這時候我們通常會使用COOKIE來實現,例如如下的程式碼: < % cookie[]cookies = request.getCookies(); if (cookies

Django筆記(cookiesession的運用及區別

目錄 怎麼使用 怎樣使用 cookie 瀏覽器端的會話技術 怎麼使用 設定cookie response = HttpResponse() # 設定cookies #response.set_cookie(key,value[,max_a

CookieSession區別聯絡及生命週期

       前幾天面試問了一個問題,當時記不太清了,上網查了下發現這個問題還真的很有講究而且很重要,自己總結下做下記錄。 一、Session與Cookie介紹 這些都是基礎知識,不過有必要做深入瞭解。先簡單介紹一下。 二者的定義: 當你在瀏覽網站的時候,WEB

CookieSession的介紹區別

 本文分別對Cookie與Session做一個介紹和總結,並分別對兩個知識點進行對比分析,讓大家對Cookie和Session有一個更深入的瞭解,並對自己的開發工作中靈活運用帶來啟示。 一、Cookie機制      Cookies是伺服器在本地機器上儲存的小段

前端頁面——CookieSession有什麼區別

原文連結:http://blog.csdn.net/u010168160/article/details/47128443 我們在實際生活中總會遇到這樣的事情,我們一旦登入(首次輸入使用者名稱和密碼)某個網站之後,當我們再次訪問的時候(只要不關閉瀏覽器),無需再次登入

cookiesession區別關系

就是 瀏覽器中 存儲 val 字典 set sessionid 服務 不同 cookie與session的區別 1. 存儲位置不同   cookie存儲在瀏覽器中   session存儲在服務端裏 2. 大小不同   cookie最大4K   session由於

CookieSession

splay 器) 簡化 技術 本質 ear 服務 默認 緩存 1、Cookie 介紹 Cookie是由服務器端生成,發送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該C

cookie session

問題 fopen com eat 必須 www 大小限制 文件操作函數 提示 cookie簡介 Cookie是存儲在客戶端瀏覽器中的數據,我們通過Cookie來跟蹤與存儲用戶數據。一般情況下,Cookie通過HTTP headers從服務端返回到客戶端。多數web程序都支持

nodejs cookiesession

ole org con only 中間件 通過 rip 存在 null cookie、session cookie:在瀏覽器保存一些數據,每次請求都會帶過來 *不安全、有限(4K) session:保存數據,保存在服務端 *安全、無限 -----------------