Session概述
Session是服務器為每個訪問這個服務器的客戶端用戶創建的一個容器,這個容器中存盤的資料能夠在多個request之間實作共享,而且,這個容器只屬于當前這個用戶,有一個唯一的id,
- Session技術就是在服務端存取會話的資料
- session的特點
- 每個session有id,存取key-value
- 資料有存活時間
- 每個Session的JESSIONID不同,使每個瀏覽器訪問自己的資料不受他人影響
session圖解
Session存取資料
- 獲取Session
HttpSession request.getSession() 獲取session物件,有session物件就回傳創建的session,沒有session就創建session物件 - 存資料
setAttribute(key,value) - 讀資料
getAttribute(key) - 或缺session的id
- String session.getId()
session的銷毀
- 時間超出了session的存活時間自動銷毀
session的默認存活時間是30分鐘,可以通過在tomcat的全域組態檔web.xml中(tomcat/config/web.xml)中設定session的存活時間(單位/分鐘)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--將session的存活時間設定成1小時(60分鐘)-->
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
- 在servlet中呼叫**session.invalidate()**方法來銷毀session
session持久化
當瀏覽器關閉后,JSESSIONID就消失了,再次訪問的時候又會重新創建了一個新的session物件,這樣操作會比較消耗資源,所以我們需要實作session的持久化,下次使用直接從瀏覽器獲取以前的JSESSIONID,而不創建新的session,
瀏覽器關閉后JESSIONID這個cookie消失了,再次訪問的時候,就不能夠在識別這個session了,
session的持久化的方法:
- 通過將session的JSESSIONID保存到cookie中,設定存活期,下次訪問直接帶給服務器,
就是能夠在較長的時間內,能夠通過JSESSIONID識別session,下次再訪問就不用創建session,通過將JSESSIONID保存到cookie中,社遏制存活日期,下次訪問的時候,直接將cookie帶給服務器,獲取JSESSIONID,得到session物件,
案例實作:
WebServlet("/JSESSIONID_Cookie")
public class JSESSIONID_CookieServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//實作持久化session
HttpSession session = request.getSession();
//獲取sessionid
String id = session.getId();
//這里注意,這個key一定要是JSESSIONID
Cookie cookie = new Cookie("JSESSIONID",id);
//設定cookie存活時間,將JSESSIONID存入cookie
cookie.setMaxAge(60*30);
//回應回瀏覽器
response.addCookie(cookie);
}
}
- tomcat 中關閉服務會自動把session持久化 (存盤在work目錄下的一個session.ser),下次訪問服務器直接從這個檔案讀取
Session的鈍化與活化(tomcat持久化session)
- 鈍化:tomcat 中正常關閉服務會自動把session持久化(保存在tomcat檔案夾的work目錄下的serssion.ser檔案)
- 活化:與鈍化相反,再次啟動tomcat服務器的時候會將保存的session讀取給服務器,

work目錄在idea發布的Using CATALINA_BASE的路徑下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/46636.html
標籤:AI
上一篇:目前對神經網路有哪些理論研究?
