會話技術_筆記

會話技術

  1. 概念會話是一次會話中包含多次請求和響應。

    一次會話:瀏覽器第一次給服務器資源發(fā)送請求,會話建立,直到有一方斷開為止

  2. 功能:在一次會話的范圍內(nèi)的多次請求間,共享數(shù)據(jù)

  3. 方式:

    • 客戶端會話技術:Cookie
    • 服務器端會話技術:Session

使用步驟:

  1. 創(chuàng)建Cookie對象, 綁定數(shù)據(jù)

    new Cookie(string name, string value)
    
  2. 發(fā)送Cookie對象

    response . addCookie(Cookie cookie)
    
  3. 獲取Cookie, 拿到數(shù)據(jù)

    Cookie[] request . getcookies()
    

實現(xiàn)原理:基于響應頭set-cooki e和請求頭cookie實現(xiàn)

cookie的細節(jié)

1. 一次可不可以發(fā)送多個cookie?

  • 可以創(chuàng)建多個cookie對象,使用response調(diào)用多次addcookie方法發(fā)送cookie即可。

2. cookie在瀏覽器中保存多長時間?

  1. 默認情況下,當瀏覽器關閉后,Cookie數(shù)據(jù)被銷毀
  2. 持久化存儲:
    • setMaxAge(int seconds)
      1. 正數(shù):將Cookie數(shù)據(jù)寫到硬盤的文件中。持久化存儲。cookie存活時間。
      2. 負數(shù):默認值
      3. 零:刪除cookie信息

3. cooki e能不能存中文?

  1. 在tomcat 8之前cooki e中不能直接存儲中文數(shù)據(jù)。
  2. 需要將中文數(shù)據(jù)轉(zhuǎn)碼--- 一般采用URL編碼(%E3)
  3. 在tomcat 8之后,cookie支持中文數(shù)據(jù)。

4.cookie共享問題?

  1. 假設在一個tomcat服務器中,部署了多個web項目,那么在這些web項目中cookie能不能共享?
  • 默認情況下cookie不能共享
  • setpath(string path):設置cooki e的獲取范圍。默認情況下,設置當前的虛擬目錄
  • 如果要共享,則可以將path設置為"/”
  1. 不同的tomcat服務器間cookie共享問題?
  • setDomain(String path):如果設置一級域名相同,那么多個服務器之間cookie可以
  • setDomain(". baidu. com"),那么tieba. baidu. com和news . baidu. com中cookie可以共享

Cookie的特點和作用

  1. 特點:
  • cookie存儲數(shù)據(jù)在客戶端瀏覽器
  • 瀏覽器對于單個cookie的大小有限(4kb)以及對同一個域下的總cookie數(shù)量也有限制(20個)
  1. 作用:
  • cookie一般用于存出少量敏感的數(shù)據(jù)
  • 在不登陸的情況下,完成服務器對客戶端的身份識別

Session

概念:服務器端會話技術,在一次會話的多次請求間共享數(shù)據(jù),將數(shù)據(jù)保存在服務器端的對象中,HttpSession

使用

  1. 獲取HttpSession對象:

    HttpSession session = request.getSession();
    
  2. 使用HttpSession對象 :

    Object getAttribute(String name )
    void setAttribute(String name, Object value)
    void removeAttribute(string name)
    
  3. 原理

    • Session的實現(xiàn)是依賴于cookie的。
  4. 細節(jié):

    4.1 當客戶端關閉后,服務器不關團,兩次獲取session是否為同一個?
    * 默認情況下。不是。
    * 如果需要相同,則可以創(chuàng)建Cookie,鍵為JSESSIONID,設置最大存活時間,讓cookie持久化保存。

       Cookie c = new Cookie("JSESSIONID" , session. getId());
       c. setMaxAge(60*60);
       response , addcookie(c)
    

客戶端不關閉,服務器關閉后,兩次獲取的session是同一 個嗎?

不是同一個,但是要確保數(shù)據(jù)不丟失。tomcat自動完成以下工作:

  • session的鈍化 :在服務器正常關閉之前,將session對象系列化到硬盤上
  • session的活化 :在服務器啟動后,將session文件轉(zhuǎn)化為內(nèi)存中的session對象即可。

session什么時候被銷毀 ?

  1. 服務器關閉
  2. session對象調(diào)用invalidate()
  3. session默認失效時間30分鐘

選擇性配置修改

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

Session特點

  1. session用于存儲一次會話的多次請求的數(shù)據(jù),存在服務器端
  2. session可以存儲任意大小的數(shù)據(jù)

session與cookie的區(qū)別

  1. session存儲數(shù)據(jù)在服務器端,cookie在客戶端
  2. session沒有數(shù)據(jù)大小限制,cookie有
  3. session數(shù)據(jù)安全,cookie相對于不安全
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 會話技術 會話:一次會話中包含多次請求和響應 一次會話:瀏覽器第一次給服務器資源發(fā)送請求,會話建立,直到有一方斷開...
    魔笛使者閱讀 221評論 0 0
  • 會話技術 1.會話:一次會話中包含多個請求和響應一次會話:瀏覽器第一次給服務器資源發(fā)送請求,會話建立,直到有一方被...
    程序猿峰岑閱讀 355評論 0 0
  • 會話管理入門 軟件中的會話:一次會話: 打開瀏覽器 -> 訪問一些服務器內(nèi)容 -> 關閉瀏覽器登錄場景:打開瀏覽器...
    奮斗的老王閱讀 1,506評論 4 53
  • 會話技術 會話 瀏覽器第一次給服務器資源發(fā)送請求,會話建立,直到有一方斷開為止,一次會話中包含多次請求和響應。 功...
    某翁閱讀 347評論 0 1
  • 一、會話跟蹤技術 在JavaWeb中,客戶向某一服務器發(fā)出第一個請求開始,會話就開始了,直到客戶關閉了瀏覽器會話結(jié)...
    咸魚有夢想呀閱讀 5,237評論 0 4

友情鏈接更多精彩內(nèi)容