日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Web会话管理

發布時間:2023/12/10 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Web会话管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.Cookie會話

cookie技術會話數據會保存在瀏覽器客戶端

cookie技術核心:

 1.構造cookie對象

 2.設置cookie:有效訪問時間(setMaxAge),有效訪問路徑(setPath),設置cookie的值(setValue)

 3.發送cookie到客戶端保存:response.addCookie發送cookie

 4.服務器接收cookie:request.getCookie()

Cookie原理:

?1)服務器創建cookie對象,把會話數據存儲到cookie對象中。new Cookie("name","value");

?2)? 服務器發送cookie信息到瀏覽器?response.addCookie(cookie);?舉例: set-cookie: name=eric? (隱藏發送了一個set-cookie名稱的響應頭)

?3)瀏覽器得到服務器發送的cookie,然后保存在瀏覽器端。

4)瀏覽器在下次訪問服務器時,會帶著cookie信息舉例: cookie: name=eric? (隱藏帶著一個叫cookie名稱的請求頭)

?5)服務器接收到瀏覽器帶來的cookie信息??request.getCookies();

Cookie的細節:

1)void setPath(java.lang.String uri)? ?:設置cookie的有效訪問路徑。有效路徑指的是cookie的有效路徑保存在哪里,那么瀏覽器在有效路徑下訪問服務器時就會帶著cookie信息,否則不帶cookie信息。

2)void setMaxAge(int expiry) : 設置cookie的有效時間。

? ? ? ? ?正整數:表示cookie數據保存瀏覽器的緩存目錄(硬盤中),數值表示保存的時間。

? ? ? ? ?負整數:表示cookie數據保存瀏覽器的內存中。瀏覽器關閉cookie就丟失了!!

? ? ? ? ?零:表示刪除同名的cookie數據

3)Cookie數據類型只能保存非中文字符串類型的。可以保存多個cookie,但是瀏覽器一般只允許存放300個Cookie,每個站點最多存放20個Cookie,每個Cookie的大小限制為4KB。

?

二.Session會話

HttpSession類,用于保存會話數據

1.創建或得到session對象

2.設置session對象? ??

void setMaxInactiveInterval(int interval):設置session的有效時間?

void invalidate():銷毀session對象??

java.lang.String getId()? : 得到session編號

3.保存會話數據到session對象中

void setAttribute(java.lang.String name, java.lang.Object value)? : 保存數據

java.lang.Object getAttribute(java.lang.String name)? : 獲取數據

void removeAttribute(java.lang.String name) : 清除數據?

Session原理”

問題: 服務器能夠識別不同的瀏覽者!!!

現象:

前提: 在哪個session域對象保存數據,就必須從哪個域對象取出!!!!

? ? ? ? ? ? ?瀏覽器1:(給s1分配一個唯一的標記:s001,把s001發送給瀏覽器)

? ? ? ? ? ? ?1)創建session對象,保存會話數據

? ? ? ? ? ? ? HttpSession session = request.getSession();?? --保存會話數據 s1

? ? ? ? ? ? ?瀏覽器1 的新窗口(帶著s001的標記到服務器查詢,s001->s1,返回s1)??

? ? ? ? ? ? ?1)得到session對象的會話數據

? ? ? ? ? ? ? ?HttpSession session = request.getSession();?? --可以取出? s1

    ?新的瀏覽器1:(沒有帶s001,不能返回s1)

? ? ? ? ? ? ? ? ? ? ? ?1)得到session對象的會話數據

? ? ? ? ? ? ? ? ? ? ? ? ? ? HttpSession session = request.getSession();?? --不可以取出? s2

?      瀏覽器2:(沒有帶s001,不能返回s1)

? ? ? ? ? ? ? ? ? ? ? ? ?1)得到session對象的會話數據

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HttpSession session = request.getSession();? --不可以取出? s3

        代碼解讀:HttpSession session = request.getSession();

    1)第一次訪問創建session對象,給session對象分配一個唯一的ID,叫JSESSIONID

?????????????????????????????????????????????? new HttpSession();

? ? ? ? ? ? ? 2)把JSESSIONID作為Cookie的值發送給瀏覽器保存

? ? ? ? ? ? ? ? ? ? ? ? ?Cookie cookie = new Cookie("JSESSIONID", sessionID);

? ? ? ? ? ? ? ? ? ? ? ? ?response.addCookie(cookie);

? ? ? ? ? ? ? ?3)第二次訪問的時候,瀏覽器帶著JSESSIONID的cookie訪問服務器

? ? ? ? ? ? ? ?4)服務器得到JSESSIONID,在服務器的內存中搜索是否存放對應編號的session對象。

?????????????????????????????????????????????? if(找到){

??????????????????????????????????????????????????????? return map.get(sessionID);

?????????????????????????????????????????????? }

?????????????????????????????????????????????? Map<String,HttpSession>]

?

?

?????????????????????????????????????????????? <"s001", s1>

?????????????????????????????????????????????? <"s001,"s2>

? ? ? ? ? ? ? ? ?5)如果找到對應編號的session對象,直接返回該對象

? ? ? ? ? ? ? ? ?6)如果找不到對應編號的session對象,創建新的session對象,繼續走1的流程

轉載于:https://www.cnblogs.com/SoftwareBuilding/p/10294760.html

總結

以上是生活随笔為你收集整理的Java Web会话管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。