javaweb开发后端常用技术_Web后端开发(11)——Session会话技术
Session
學(xué)過了Cookie客戶端會話技術(shù),下面我們來學(xué)習(xí)Session服務(wù)器端會話技術(shù)。
Session概念
Session是服務(wù)器端會話技術(shù),在一次會話的多次請求間共享數(shù)據(jù),將數(shù)據(jù)保存在服務(wù)器端的HttpSession對象中。
在計算機專業(yè)術(shù)語中,Session是指一個終端用戶與交互系統(tǒng)進(jìn)行通信的時間間隔,通常指從注冊進(jìn)入系統(tǒng)到注銷退出系統(tǒng)之間所經(jīng)過的時間。以及如果需要的話,可能還有一定的操作空間。
Session快速入門
①獲取HttpSession對象
HttpSession session = request.getSession();②使用HttpSession對象
(1)存儲數(shù)據(jù):
void setAttribute(String name, Object value)(2)獲取數(shù)據(jù):
Object getAttribute(String name)(3)刪除數(shù)據(jù)
void removeAttribute(String name)Session原理
Session的實現(xiàn)是依賴于Cookie的。
(1)當(dāng)一個session第一次被啟用時,一個獨一的標(biāo)識被存儲于本地的cookie中。
(2)當(dāng)瀏覽器再次訪問時,會帶有包含上述標(biāo)識的Cookie請求頭。
(3)服務(wù)器看到該請求頭后會尋找該標(biāo)識的Session對象,進(jìn)而獲取其中的數(shù)據(jù)。
Session細(xì)節(jié)
①當(dāng)客戶端關(guān)閉后,服務(wù)器不關(guān)閉,兩次獲取session是否為同一個?
默認(rèn)情況下:不是。如果需要相同,則可以創(chuàng)建Cookie,鍵為JSESSIONID,設(shè)置最大存活時間,讓cookie持久化保存。
Cookie cookie = new Cookie("JSESSIONID",session.getId());cookie.setMaxAge(60*60);response.addCookie(cookie);②客戶端不關(guān)閉,服務(wù)器關(guān)閉后,兩次獲取的session是同一個嗎?
不是同一個,但是要確保數(shù)據(jù)不丟失。tomcat自動完成以下工作:
session的鈍化:在服務(wù)器正常關(guān)閉之前,將session對象系列化到硬盤上
session的活化:在服務(wù)器啟動后,將session文件轉(zhuǎn)化為內(nèi)存中的session對象即可。
③Session什么時候被銷毀?
服務(wù)器關(guān)閉
session對象調(diào)用invalidate() 。
session默認(rèn)失效時間 30分鐘
選擇性配置修改
<session-config> <session-timeout>30session-timeout>session-config>Session的特點
session用于存儲一次會話的多次請求的數(shù)據(jù),存在服務(wù)器端
session可以存儲任意類型,任意大小的數(shù)據(jù)
Session與Cookie的區(qū)別:
Session存儲數(shù)據(jù)在服務(wù)器端,Cookie在客戶端;
Session沒有數(shù)據(jù)大小限制,Cookie有;
Session數(shù)據(jù)安全,Cookie相對于不安全;
總結(jié)
以上是生活随笔為你收集整理的javaweb开发后端常用技术_Web后端开发(11)——Session会话技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何选择漏电保护器规格型号_施工现场三级
- 下一篇: 共模电感适用的频率_电感选型详解及设计规