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