啥是Session?

来源:https://www.cnblogs.com/kohler21/archive/2022/09/27/16735804.html
-Advertisement-
Play Games

什麼是 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 超時的概念:
image

示例代碼:

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 之間關聯的技術內幕 之間關聯的技術

image

歡迎關註公眾號:愚生淺末。

歡迎關註我的公眾號,共同學習


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 概述 tomcat亂碼問題相信大家肯定都遇見過,本篇將詳細介紹有關Tomcat的各種亂碼問題原因和解決方法😊 原因 首先亂碼問題的原因通俗的講就是讀的編碼格式和寫的解碼格式不一致,比如最常見的兩種中文編碼UTF-8和GBK,UTF-8一個漢字占三個位元組,GBK一個漢字占兩個位元組,所以當編碼與解碼格 ...
  • 簡述 類型:結構型 目的:將對象集合組合成樹形結構,使客戶端可以以一致的方式處理單個對象(葉子節點)和組合對象(根節點) 話不多說,上優化案例。 優化案例 最初版v0 不使用組合模式。 現有一個文件和目錄的管理模塊。如樣例。 public class File { // 文件類 private St ...
  • 探索密碼學的奇妙之旅。介紹HMAC單向散列消息認證碼、加鹽。使用golang crypto包實現HMAC生成與驗證,重放攻擊演示。 ...
  • ###一、簡介 什麼是分散式爬蟲? 分散式爬蟲就是把一個爬蟲任務放到多台機器上去運行,提高爬取效率 但是每台機器運行同一套代碼,都在各自的任務和去重隊列,等於各爬各的,最終爬的數據是相同的 因此需要提供一個公共的去重隊列和公共的任務隊列,多台機器都在共用的隊列中去調度和去重,然後分別爬取 原來scr ...
  • 可視化打包 exe,這個神器絕了 auto-py-to-exe 是一個用於將Python程式打包成可執行文件的圖形化工具。本文就是主要介紹如何使用 auto-py-to-exe 完成 python 程式打包。auto-py-to-exe 基於 pyinstaller ,相比於 pyinstaller ...
  • 如何將編寫的c語言程式打包成exe可執行文件呢? 以前我們寫程式很多是在編輯器上,讓編輯起來編譯運行我們的程式。如果想將其打包成exe可執行文件該如何做? 我這裡推薦使用codeBlocks的gcc命令,因為比較簡單。像vs這種編輯器就像是一把屠龍刀。功能過於複雜,需要註意的很多。如何適用codeB ...
  • 《Go 精進之路》 讀書筆記。簡要記錄自己打五角星的部分,方便複習鞏固。目前看到p120 Go 語言遵從的設計哲學為組合 垂直組合:類型嵌入,快速讓一個類型復用其他類型已經實現的能力,實現功能的垂直擴展。 水平組合:介面實現鴨子類型。 變數名字中不要帶有類型信息 userSlice []*User ...
  • 怎麼借鑒開源代碼來打造一些自身面對的問題解決方案?也許有一些Demo來進行回答演示或許更為貼近地氣些。這裡打算寫一些玩轉源碼為主題的文字來實踐的回答,最近在看P3C的一些源碼,那就從這開始吧。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...