什麼是 Session 會話? 1、Session 就一個介面(HttpSession)。 2、Session 就是會話。它是用來維護一個客戶端和伺服器之間關聯的一種技術。 3、每個客戶端都有自己的一個 Session 會話。 4、Session 會話中,我們經常用來保存用戶登錄之後的信息。 如何創 ...
什麼是 Session 會話?
1、Session 就一個介面(HttpSession)。
2、Session 就是會話。它是用來維護一個客戶端和伺服器之間關聯的一種技術。
3、每個客戶端都有自己的一個 Session 會話。
4、Session 會話中,我們經常用來保存用戶登錄之後的信息。
如何創建和獲取 Session
如何創建和獲取 Session。它們的 API 是一樣的。
request.getSession()
第一次調用是:創建 Session 會話
之後調用都是:獲取前面創建好的 Session 會話對象。
isNew(); 判斷到底是不是剛創建出來的(新的)
true 表示剛創建
false 表示獲取之前創建
每個會話都有一個身份證號。也就是 ID 值。而且這個 ID 是唯一的。
getId() 得到 Session 的會話 id 值。
Session 域數據的存取
//保存數據
protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
req.getSession().setAttribute("key1", "value1");
resp.getWriter().write(" 已經往 Session 中保存了數據");
}
//獲取數據
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
Object attribute = req.getSession().getAttribute("key1");
resp.getWriter().write("從 從 Session 中獲取出 key1 的數據是:" + attribute);
}
Session 生命周期控制
public void setMaxInactiveInterval(int interval) 設置 Session 的超時時間(以秒為單位),超過指定的時長,Session就會被銷毀。
值為正數的時候,設定 Session 的超時時長。
負數表示永不超時(極少使用)
public int getMaxInactiveInterval()獲取 Session 的超時時間
public void invalidate() 讓當前 Session 會話馬上超時無效。
Session 預設的超時時長是多少?
Session 預設的超時時間長為 30 分鐘。
因為在Tomcat伺服器的配置文件web.xml中預設有以下的配置,它就表示配置了當前Tomcat伺服器下所有的Session超時配置預設時長為:30 分鐘。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
如果說。你希望你的 web 工程,預設的 Session 的超時時長為其他時長。你可以在你自己的 web.xml 配置文件中做以上相同的配置。就可以修改你的 web 工程所有 Seession 的預設超時時長。
<!-- 表示當前 web 工程。創建出來 的所有 Session 預設是 20 分鐘 超時時長 -->
<session-config>
<session-timeout>20</session-timeout>
</session-config>
如果你想只修改個別 Session 的超時時長。就可以使用上面的 API。setMaxInactiveInterval(int interval)來進行單獨的設置。
session.setMaxInactiveInterval(int interval)
單獨設置超時時長。
Session 超時的概念:
示例代碼:
protected void life3(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
// 先獲取 Session 對象
HttpSession session = req.getSession();
// 設置當前 Session3 秒後超時
session.setMaxInactiveInterval(3);
resp.getWriter().write(" 當前 Session 已經設置為 3 秒後超時");
}
Session 馬上被超時示例:
protected void deleteNow(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
// 先獲取 Session 對象
HttpSession session = req.getSession();
// 讓 Session 會話馬上超時
session.invalidate();
resp.getWriter().write("Session 已經設置為超時(無效)");
}
瀏覽器和 Session 之間關聯的技術內幕 之間關聯的技術
歡迎關註公眾號:愚生淺末。