1. 程式人生 > >Servlet第七篇【Cookie和Session的區別、應用】

Servlet第七篇【Cookie和Session的區別、應用】

Session和Cookie的區別

  • 從儲存方式上比較

    • Cookie只能儲存字串,如果要儲存非ASCII字串還要對其編碼。
    • Session可以儲存任何型別的資料,可以把Session看成是一個容器
  • 從隱私安全上比較

    • Cookie儲存在瀏覽器中,對客戶端是可見的。資訊容易洩露出去。如果使用Cookie,最好將Cookie加密
    • Session儲存在伺服器上,對客戶端是透明的。不存在敏感資訊洩露問題。
  • 從有效期上比較

    • Cookie儲存在硬碟中,只需要設定maxAge屬性為比較大的正整數,即使關閉瀏覽器,Cookie還是存在的
    • Session的儲存在伺服器中,設定maxInactiveInterval屬性值來確定Session的有效期。並且Session依賴於名為JSESSIONID的Cookie,該Cookie預設的maxAge屬性為-1。如果關閉了瀏覽器,該Session雖然沒有從伺服器中消亡,但也就失效了。
  • 從對伺服器的負擔比較

    • Session是儲存在伺服器的,每個使用者都會產生一個Session,如果是併發訪問的使用者非常多,是不能使用Session的,Session會消耗大量的記憶體。
    • Cookie是儲存在客戶端的。不佔用伺服器的資源。像baidu、Sina這樣的大型網站,一般都是使用Cookie來進行會話跟蹤。
  • 從瀏覽器的支援上比較

    • 如果瀏覽器禁用了Cookie,那麼Cookie是無用的了!
    • 如果瀏覽器禁用了Cookie,Session可以通過URL地址重寫來進行會話跟蹤。
  • 從跨域名上比較

    • Cookie可以設定domain屬性來實現跨域名
    • Session只在當前的域名內有效,不可誇域名

Cookie和Session共同使用

  • 如果僅僅使用Cookie或僅僅使用Session可能達不到理想的效果。這時應該嘗試一下同時使用Session和Cookie

  • 那麼,什麼時候才需要同時使用Cookie和Session呢?

  • 在上一篇部落格中,我們使用了Session來進行簡單的購物,功能也的確實現了。現在有一個問題:我在購物的途中,不小心關閉了瀏覽器。當我再返回進去瀏覽器的時候,發現我購買過的商品記錄都沒了!!為什麼會沒了呢?原因也非常簡單:伺服器為Session自動維護的Cookie的maxAge屬性預設是-1的,當瀏覽器關閉掉了,該Cookie就自動消亡了。當用戶再次訪問的時候,已經不是原來的Cookie了。
  • 我們現在想的是:即使我不小心關閉了瀏覽器了,我重新進去網站,我還能找到我的購買記錄
  • 要實現該功能也十分簡單,問題其實就在:伺服器為Session自動維護的Cookie的maxAge屬性是-1,Cookie沒有儲存在硬碟中。我現在要做的就是:把Cookie儲存在硬碟中,即使我關閉了瀏覽器,瀏覽器再次訪問頁面的時候,可以帶上Cookie,從而伺服器識別出Session。

  • 第一種方式:只需要在處理購買頁面上建立Cookie,Cookie的值是Session的id返回給瀏覽器即可


        Cookie cookie = new Cookie("JSESSIONID",session.getId());
        cookie.setMaxAge(30*60);
        cookie.setPath("/ouzicheng/");
        response.addCookie(cookie);
  • 第二種方式: 在server.xml檔案中配置,將每個使用者的Session在伺服器關閉的時候序列化到硬碟或資料庫上儲存。但此方法不常用,知道即可!

  • 下面看一下效果

相關推薦

ServletCookieSession區別應用

Session和Cookie的區別 從儲存方式上比較 Cookie只能儲存字串,如果要儲存非ASCII字串還要對其編碼。 Session可以儲存任何型別的資料,可以把Session看成是一個容器

Servletrequest物件常用方法應用

什麼是HttpServletRequest HttpServletRequest**物件代表客戶端的請求,當客戶端通過HTTP協議訪問伺服器時,**HTTP請求頭中的所有資訊都封裝在這個物件中,開發人員通過這個物件的方法,可以獲得客戶這些資訊。 簡單

Servlet學習()——會話技術cookie&session

文件 servlet 請求頭 tro 訪問服務器 狀態 設置 路徑 技術分享 一、會話技術簡介 1.存儲客戶端的狀態 例如網站的購物系統,用戶將購買的商品信息存儲到哪裏?因為Http協議是無狀態的,也就是說每個客戶訪問服務器端資源時,服務器並不知道該客戶端是誰,所以需要會話

資料清洗準備

在資料分析和建模的過程中,要花很多時間在資料準備上:載入、清理、轉換以及重塑。這些⼯作會佔到分析師時間的80%或更多。有時,儲存在⽂件和資料庫中的資料的格式不適合某個特定的任務。pandas和內建的Python標準庫提供了⼀組⾼級的、靈活的、快速的⼯具,可以讓你輕鬆地將資料規變為想要的格式。接下來會討論處理缺

Python 語言學習 :函式1(定義呼叫變數的作用域)

函式是把一些語句集合在一起的程式結構,用於把複雜的流程細分成不同的元件,能夠減少程式碼的冗餘、程式碼的複用和修改程式碼的代價。 函式可以0個、1個或多個引數,向函式傳遞引數,可以控制函式的流程。函式還可以返回程式碼執行的結果,從技術上講,任何函式都要返回結果,一個沒有返回值的函式會自動返回none物件。如果

Python爬蟲番外CookieSession

出現 alt 登錄 這也 nan b站 程序員 分別是 註釋 原文地址https://i.cnblogs.com/EditPosts.aspx?opt=1 關於cookie和session估計很多程序員面試的時候都會被問到,這兩個概念在寫web以及爬蟲中都會涉及,並且兩者可

SpringMVCRESTful支援攔截器

RESTful支援 我們在學習webservice的時候可能就聽過RESTful這麼一個名詞,當時候與SOAP進行對比的…那麼RESTful究竟是什麼東東呢??? RESTful(Representational State Transfer)軟體開發理念,

cookie session區別

訪問 不同的 數據庫 應用 開發人員 內存 ESS code 欺騙 cookie 和 session區別 ① cookie介紹說明 cookie 存放在瀏覽器緩存中---瀏覽器進行查看(谷歌) 【設置】---【高級】---【內容設置】---【cookie】---【所有 C

cookiesession區別

理解: cookie和session都是由服務端建立 cookie儲存在瀏覽器(客戶端),session儲存在服務端,一般session(session_id)都是儲存在cookie中。伺服器建立session出來後,會把session的id號,以cookie的形式回寫給

104. Spring Boot 啟動流程分析從零開始學Spring Boot

問題的提出:Spring Boot不像spring需要定義xml檔案檔案,那麼spring boot是如何在沒有配置檔案的情況下為我們啟動一個完整的WEB工程的呢。我們先@SpringBootApplication開始分析下這個啟動流程,原始碼取自:1.4.1.RELEAS

登入時記住密碼——FilterCookieSession的簡單應用

思路:當用戶進入某一頁面時,用過濾器進行預處理,判斷Session中是否有儲存使用者的登入資訊,如果沒有,則從Cookie中查詢是否有儲存使用者登入資訊的cookie,如果有將其取出,進行登入操作。 1.  使用者的登入頁面login.jsp: <%@ page la

Struts2請求資料自動封裝Action得到域物件

前言 前三篇的Struts博文基本把Struts的配置資訊講解完了…..本博文主要講解Struts對資料的處理 一般地,我們使用Servlet的時候都是分為幾個步驟的: 得到web層的資料、封裝資料 呼叫service層的邏輯業務程式碼 將資料儲存在域物

設計模式我一起簡單認識橋接模式

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e2a06bdecb6944c89988b5813a39bc13~tplv-k3u1fbpfcp-zoom-1.image) # 一 引言 橋接模式理解起來也是非常簡單,我們仍然從生活中的問題出發,

滲透課程-上傳漏洞之繞過上傳漏洞

ng- 相關 都是 http itl 了解 利用 存在 上傳 前一篇我們已經講過了上傳漏洞的解析漏洞,在某些時候,知道網站存在哪個解析漏洞,那麽我們就可以更好的利用上傳漏洞 這個知識點在我們前面就有粗略說過了(http://www.yuntest.org/index.php

python之旅六面向對象

封裝 過程 col self logs 分類 ges eric 使用 面向對象三大特性 面向過程:根據業務邏輯從上到下寫壘代碼 函數式:將某功能代碼封裝到函數中,日後便無需重復編寫,僅調用函數即可 面向對象:對函數進行分類和封裝,讓開發“更快更好更強... 面向對象編程

基礎知識《十二》一文章理解CookieSession

alt str web應用 rfi 密鑰 hide 開始 單位 ews 理解Cookie和Session機制 會話(Session)跟蹤是Web程序中常用的技術,用來跟蹤用戶的整個會話。常用的會話跟蹤技術是Cookie與Session。Co

cookiesession 創建驗證 原始的servlet

原始的 nag abc mar ima col ado blog cookie 1.cookie2sessioncookie和session 創建和驗證 原始的servlet

python全棧開發Python文件操作

編寫 alt utf-8 str 不存在 odi 得到 encoding 處理流 一、文件處理流程   1.打開文件,得到文件句柄並賦值給一個變量   2.通過句柄對文件進行操作   3.關閉文件 r模式,默認模式,文件不存在則報錯 w模式,文件不存在則創建,文件存在則覆蓋

MySQL數據庫學習單表查詢

not null for 比較運算符 創建 字符串 直接 過濾 field gpo 先創建表 #創建表 create table employee( id int not null unique auto_increment, name varchar(20) not

web前端JS的DOM對象一

查找 all 第七篇 children 離開 驗證 eat scrip image 一、什麽是HTML DOM HTML Document Object Model(文檔對象模型) HTML DOM 定義了訪問和操作HTML文檔的標準方法 HTML