天天看點

Javaweb——會話技術(Cookie、Session)講解會話CookieSessionServlet 的資料通路範圍的總結(Servlet 的域對象的總結)

文章目錄

  • 會話
    • 一、 會話技術的概述
    • 二、會話技術的實作原理
      • 1. 會話技術的分類
      • 2. 會話技術的實作原理
      • 3. 記錄使用者上次通路時間
  • Cookie
    • 一、Cookie 的分類
    • 二、Cookie 的 API 的概述
      • 1. Cookie 的使用步驟
      • 2. 實作原理
      • 3. Cookie 在浏覽器中的儲存時間
      • 4. Cookie 共享問題
      • 5. 構造方法
      • 6. 其他方法
    • 三、Cookie 的使用細節
  • Session
    • 一、Session 的概述
      • 1. Session 是什麼
      • 2. 為什麼有 Cookie 還要有 Session
      • 3. Session 如何儲存使用者資料
    • 二、Session 的原理
    • 三、Session 作為域對象存取資料
      • 1. Session 作為域對象的 API
      • 2. Session 作為域對象的作用範圍
  • Servlet 的資料通路範圍的總結(Servlet 的域對象的總結)

會話

一、 會話技術的概述

  • 使用者打開一個浏覽器,點選多個超連結通路伺服器的 web 資源,然後關閉浏覽器,整個過程稱為是一次會話;
  • 使用會話技術的原因:每個使用者與伺服器互動,都會産生各自的資料;程式想将這些資料進行儲存,就要使用會話技術;
Javaweb——會話技術(Cookie、Session)講解會話CookieSessionServlet 的資料通路範圍的總結(Servlet 的域對象的總結)

二、會話技術的實作原理

1. 會話技術的分類

  • Cookie 技術

    是用戶端技術,程式把每個使用者的資料以 cookie 的形式儲存到各自的浏覽器中;當使用者使用浏覽器再次通路伺服器中的 web 資源時,就會帶着各自的資料過去;

  • Session 技術

    是伺服器端技術,伺服器在運作時為每一個使用者的浏覽器建立一個獨享的 Session 對象;使用者通路伺服器時,可以把各自的資料放到各自的 Session 中,當使用者再次通路伺服器中的 web 資源時,其他 web 資源再從使用者各自的 Session 中取出資料為使用者服務;

2. 會話技術的實作原理

Javaweb——會話技術(Cookie、Session)講解會話CookieSessionServlet 的資料通路範圍的總結(Servlet 的域對象的總結)
Javaweb——會話技術(Cookie、Session)講解會話CookieSessionServlet 的資料通路範圍的總結(Servlet 的域對象的總結)

3. 記錄使用者上次通路時間

Javaweb——會話技術(Cookie、Session)講解會話CookieSessionServlet 的資料通路範圍的總結(Servlet 的域對象的總結)

Cookie

一、Cookie 的分類

  • 預設級别的 Cookie
    • 沒有設定有效時間的 Cookie;
    • 預設情況下隻要關閉了浏覽器,Cookie 也會被銷毀;(Cookie 存在于浏覽器的記憶體中);
  • 持久級别的 Cookie
    • 設定了有效時間的 Cookie;
    • 這種 Cookie 的内容不是儲存在浏覽器的記憶體中;(Cookie 的内容儲存在硬碟上);
    • 關閉浏覽器,再次打開時浏覽器會加載硬碟上的檔案,Cookie 的資料不會丢失;

二、Cookie 的 API 的概述

1. Cookie 的使用步驟

  • 建立Cookie對象,綁定資料

    new Cookie(String name, String value)

  • 發送Cookie,

    response.addCookie(Cookie cookie)

  • 擷取Cookie,

    拿到資料 Cookie[] request.getCookies()

2. 實作原理

  • 基于

    響應頭set-cookie

    請求頭cookie

    實作

3. Cookie 在浏覽器中的儲存時間

  • 預設情況下,當浏覽器關閉後,Cookie資料被銷毀
  • 持久化存儲。

    setMaxAge(int seconds)

    • 正數:将 Cookie 資料寫入到硬碟,持久化存儲 Cookie 的存活時間;
    • 負數:預設值;
    • 零:删除 Cookie 資訊。

4. Cookie 共享問題

  • 假設在一個 tomcat 伺服器中,有多個 web 項目,在這些 web 項目中的 cookie 能否共享
  • 不同的 tomcat 服務期之間的 cookie 能否共享?

5. 構造方法

Cookie(String name, String value)

6. 其他方法

  • 獲得 Cookie 的名稱的方法;

    getName()

  • 獲得 Cookie 的值的方法;

    getValue()

  • 獲得 Cookie 的有效域名;

    setDonain(String pattern)

  • 設定 Cookie 的有效路徑;

    setPath(String uri)

  • 設定 Cookie 的有效時長;

    setMaxAge(int expiry)

三、Cookie 的使用細節

  • 一個 Cookie 隻能一種辨別資訊,至少含有一個辨別該資訊的名稱和值;
  • 一個 web 站點可以給一個浏覽器發送多個 cookie;

    一個 web 浏覽器可以存儲多個 web 站點的 cookie;

  • 浏覽器存放的 Cookie 的大小和個數是有限制的;
  • 如果建立了一個 Cookie,并發送到浏覽器,預設情況下它是一個會話級别的 Cookie;
  • cookie 一般用于存儲少量的不太敏感的資料;
  • 在不登陸的情況下,完成伺服器對用戶端的身份識别;

Session

一、Session 的概述

1. Session 是什麼

  • Session 稱為是一次會話,Cookie 将使用者産生的私有資料儲存到浏覽器端,Session 将使用者産生的私有資料儲存到伺服器端;
  • 一個浏覽器獨占一個 Session 對象;
  • 需要在儲存使用者資料的時候,伺服器程式可以将使用者資料寫到 Session 對象中,當使用者使用浏覽器通路其他程式時,其他程式可以從使用者的 session 中取出該使用者的資料,為使用者服務;

2. 為什麼有 Cookie 還要有 Session

Cookie Session
儲存的資料有大小和數量限制 沒有個數和大小限制
資料是儲存到用戶端浏覽器上的(不是很安全) 資料儲存在伺服器上(相對安全)

3. Session 如何儲存使用者資料

  • Session 對象由伺服器建立,開發人員可以調用 request 對象的 getSession 方法得到 Session 對象;
    Javaweb——會話技術(Cookie、Session)講解會話CookieSessionServlet 的資料通路範圍的總結(Servlet 的域對象的總結)

二、Session 的原理

  • 伺服器是如何實作 一個 session 為一個使用者浏覽器服務的?
    Javaweb——會話技術(Cookie、Session)講解會話CookieSessionServlet 的資料通路範圍的總結(Servlet 的域對象的總結)
  • Session 的實作原理:

    基于 Cookie 的,基于 Cookie 回寫了一個 Session 的ID;

三、Session 作為域對象存取資料

1. Session 作為域對象的 API

  • 向 session 中存入資料;

    setAttribute(String name, String value)

  • 從 session 域中擷取資料;

    getAttribute(String name)

  • 從 session 域中移除資料;

    removeAttribute(String name)

2. Session 作為域對象的作用範圍

  • Session 作為域對象,作用範圍就是一次會話的範圍;
  • 一次會話,指的是使用者打開浏覽器點選多個超連結,通路伺服器資源,到最後關閉浏覽器的過程;
  • session可以存儲任意類型,任意大小的資料;
  • 适合于儲存購物資訊、使用者登入資訊、驗證碼等。

Servlet 的資料通路範圍的總結(Servlet 的域對象的總結)

請求範圍(ServletRequest) 會話範圍(HTTPSession) 應用範圍(ServletContext)
何時建立 當使用者向伺服器發送一次請求,伺服器建立一個 request 對象 伺服器端第一次調用 getSession() 方法時建立 伺服器啟動時建立,為每個 web 項目建立一個單獨的 ServletContext 對象
何時銷毀 當伺服器對這次請求做出了響應,伺服器會銷毀這個 request 對象 三種情況:①Session 過期,預設過期時間為30分鐘;②非正常關閉伺服器;③手動調用 session.invalidate(); 伺服器關閉的時候,或者項目從伺服器中移除的時候
如何存資料 void setAttribute(String name, String value) void setAttribute(String name, String value) void setAttribute(String name, String value)
如何取資料 Object getAttribute(String name) Object getAttribute(String name) Object getAttribute(String name)
作用範圍 一次請求(轉發就是一次請求) 一次會話(多次請求) 整個應用

繼續閱讀