服务器端会话技术Session|| Session的原理||Session的细节||session的钝化session的活化||session的特点||session与Cookie的区别
Session
1. 概念:服務(wù)器端會(huì)話技術(shù),在一次會(huì)話的多次請(qǐng)求間共享數(shù)據(jù),將數(shù)據(jù)保存在服務(wù)器端的對(duì)象中。HttpSession
2. 快速入門(mén):
?? ?1. 獲取HttpSession對(duì)象:
?? ??? ?HttpSession session = request.getSession();
?? ?2. 使用HttpSession對(duì)象:
?? ??? ?Object getAttribute(String name) ?
?? ??? ?void setAttribute(String name, Object value)
?? ??? ?void removeAttribute(String name) ?
3. 原理
?? ?* Session的實(shí)現(xiàn)是依賴(lài)于Cookie的。
Session的細(xì)節(jié)
1. 當(dāng)客戶(hù)端關(guān)閉后,服務(wù)器不關(guān)閉,兩次獲取session是否為同一個(gè)?
?? ??? ?* 默認(rèn)情況下。不是。
?? ??? ?* 如果需要相同,則可以創(chuàng)建Cookie,鍵為JSESSIONID,設(shè)置最大存活時(shí)間,讓cookie持久化保存。
?? ??? ??? ? Cookie c = new Cookie("JSESSIONID",session.getId());
?? ? ? ? ? ? c.setMaxAge(60*60);
?? ? ? ? ? ? response.addCookie(c);
2. 客戶(hù)端不關(guān)閉,服務(wù)器關(guān)閉后,兩次獲取的session是同一個(gè)嗎?
?? ??? ?* 不是同一個(gè),但是要確保數(shù)據(jù)不丟失。tomcat自動(dòng)完成以下工作
?? ??? ??? ?* session的鈍化:
?? ??? ??? ??? ?* 在服務(wù)器正常關(guān)閉之前,將session對(duì)象系列化到硬盤(pán)上
?? ??? ??? ?* session的活化:
?? ??? ??? ??? ?* 在服務(wù)器啟動(dòng)后,將session文件轉(zhuǎn)化為內(nèi)存中的session對(duì)象即可。
3. session什么時(shí)候被銷(xiāo)毀?
?? ??? ?1. 服務(wù)器關(guān)閉
?? ??? ?2. session對(duì)象調(diào)用invalidate() 。
?? ??? ?3. session默認(rèn)失效時(shí)間 30分鐘
?? ??? ??? ?選擇性配置修改?? ?
?? ??? ??? ?<session-config>
?? ??? ? ? ? ? ?<session-timeout>30</session-timeout>
?? ??? ? ? ?</session-config>
?
?5. session的特點(diǎn)
?? ? 1. session用于存儲(chǔ)一次會(huì)話的多次請(qǐng)求的數(shù)據(jù),存在服務(wù)器端
?? ? 2. session可以存儲(chǔ)任意類(lèi)型,任意大小的數(shù)據(jù)
?? ?* session與Cookie的區(qū)別:
?? ??? ?1. session存儲(chǔ)數(shù)據(jù)在服務(wù)器端,Cookie在客戶(hù)端
?? ??? ?2. session沒(méi)有數(shù)據(jù)大小限制,Cookie有
?? ??? ?3. session數(shù)據(jù)安全,Cookie相對(duì)于不安全
總結(jié)
以上是生活随笔為你收集整理的服务器端会话技术Session|| Session的原理||Session的细节||session的钝化session的活化||session的特点||session与Cookie的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 三层架构:软件设计架构
- 下一篇: 案例:验证码