Java中的會話Cookie&&Session
會話技術
- 會話: 一次會話中包含屢次請求和響應.
- 一次會話:瀏覽器第一次給服務器資源發送請,會話創建,直到有一方斷開爲止
- 功能:在一次會話的範圍內的屢次請求之間共享數據
- 方式:
- 客戶端會話技術:cookie
服務器端和會話技術:sessionweb
cookie:
- 概念: 客戶端會話技術,將數據保存在客戶端
- 快速入門:
- 使用步驟
- 建立cookie對象,綁定數據
- new Cookie(String name,String value)
- 發送cookie對象
- response.addCookie(Cookie cookie)
- 獲取cookie拿到數據
- Cookie[] request.getCookies()
- 實現原理:
- 基於響應頭的set-cookie和請求頭cookie實現
- cookie的細節
- 一次可不能夠發送多個cookie?
- 能夠建立多個Cookie對象,使用response調用屢次addcookie方法發送cookie便可;
- cookie在瀏覽器中保存時間?
- 默認狀況下,當瀏覽器關閉後,cookie對象即銷燬
- 設置cookie的持久化存儲
- setMaxAge(int seconds)
- 正數:將cookie數據寫到硬盤的文件中.持久化存儲,cookie存活時間
- 負數:關閉瀏覽器後cookie對象銷燬
- 0:銷燬cookie
- cookie中能不能存中文?
- 在tomcat8以前不支持中文,須要轉碼
- tomcat8支持中文
- cookie共享問題?
- 假設一個tomcat下部署多個web項目,那麼在這些web項目下cookie能不能共享?
- 默認狀況下不能共享
- setPath(String path):設置cookie的取值範圍.默認狀況下設置爲當前的虛擬目錄
- 若是要共享,則能夠將path設置爲"/";
- 不一樣的tomcat服務器間cookie如何共享
- setDomain(String path):若是設置一級域名相同,那麼多個服務器之間cookie能夠共享
- cookie的特色和做用
- cookie儲存數據在客戶端
- 瀏覽器對於單個cookie的大小有限制(4kb)以及同一個域名下的總cookie數量也有限制(20個)
- 做用:
- cookie通常用於儲存少許不太敏感的數據
- 在不登錄的狀況下,完成服務器對客戶端的身份識別
Session
- 概念:服務器端會話技術,在一次會話的屢次請求之間共享數據,將數據保存在服務器的對象中
- 快速入門
- 獲取HttpSession對象
- HttpSession session=request.getSession();
- 使用HttpSession對象
- setAttribute(String name,Object object)
- Object getAttribute()
- removeAttribute(String name)
- 原理:session的實現是依靠cookie的
- 細節:
- 當客戶端關閉時服務器端不關閉,獲取的session是同一個嗎?
- 默認不是,若是須要相同,則能夠建立cookie 設置鍵爲JESSIONID,存活時間
- 當服務器關閉,客戶端不關閉獲取的session是同一個嗎?
- 不是同一個,可是要確保數據不丟失
- session的鈍化
- 在服務器正常關閉以前將session對象系列化帶硬盤
- session的活化
- 在服務器啓動後,將session文件轉化爲內存中的session對象
- session是麼時候被銷燬
1. 服務器關閉時
2. session對象調用invalidate().
3. session默認失效時間:30分鐘
- session的特色
1. session用於存儲一次會話的屢次請求數據,存在服務器端
2. session能夠存儲任意類型,任意大小的數據
- Session與Cookie的區別
- session儲存數據在服務器端,cookie在客戶端
- session沒有數據大小限制,cookie有
- session數據安全,cookie相對於不安全
![d1b6b30c56f7c4bfac5f529942fd7de4.png](http://static.javashuo.com/static/loading.gif)
歡迎關注本站公眾號,獲取更多信息