啥是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
  • PasteSpider是什麼? 一款使用.net編寫的開源的Linux容器部署助手,支持一鍵發佈,平滑升級,自動伸縮, Key-Value配置,項目網關,環境隔離,運行報表,差量升級,私有倉庫,集群部署,版本管理等! 30分鐘上手,讓開發也可以很容易的學會在linux上部署你得項目! [從需求角度介 ...
  • SQLSugar是什麼 **1. 輕量級ORM框架,專為.NET CORE開發人員設計,它提供了簡單、高效的方式來處理資料庫操作,使開發人員能夠更輕鬆地與資料庫進行交互 2. 簡化資料庫操作和數據訪問,允許開發人員在C#代碼中直接操作資料庫,而不需要編寫複雜的SQL語句 3. 支持多種資料庫,包括但 ...
  • 在C#中,經常會有一些耗時較長的CPU密集型運算,因為如果直接在UI線程執行這樣的運算就會出現UI不響應的問題。解決這類問題的主要途徑是使用多線程,啟動一個後臺線程,把運算操作放在這個後臺線程中完成。但是原生介面的線程操作有一些難度,如果要更進一步的去完成線程間的通訊就會難上加難。 因此,.NET類 ...
  • 一:背景 1. 講故事 前些天有位朋友在微信上丟了一個崩潰的dump給我,讓我幫忙看下為什麼出現了崩潰,在 Windows 的事件查看器上顯示的是經典的 訪問違例 ,即 c0000005 錯誤碼,不管怎麼說有dump就可以上windbg開幹了。 二:WinDbg 分析 1. 程式為誰崩潰了 在 Wi ...
  • CSharpe中的IO+NPOI+序列化 文件文件夾操作 學習一下常見的文件、文件夾的操作。 什麼是IO流? I:就是input O:就是output,故稱:輸入輸出流 將數據讀入記憶體或者記憶體輸出的過程。 常見的IO流操作,一般說的是[記憶體]與[磁碟]之間的輸入輸出。 作用 持久化數據,保證數據不再 ...
  • C#.NET與JAVA互通之MD5哈希V2024 配套視頻: 要點: 1.計算MD5時,SDK自帶的計算哈希(ComputeHash)方法,輸入輸出參數都是byte數組。就涉及到字元串轉byte數組轉換時,編碼選擇的問題。 2.輸入參數,字元串轉byte數組時,編碼雙方要統一,一般為:UTF-8。 ...
  • CodeWF.EventBus,一款靈活的事件匯流排庫,實現模塊間解耦通信。支持多種.NET項目類型,如WPF、WinForms、ASP.NET Core等。採用簡潔設計,輕鬆實現事件的發佈與訂閱。通過有序的消息處理,確保事件得到妥善處理。簡化您的代碼,提升系統可維護性。 ...
  • 一、基本的.NET框架概念 .NET框架是一個由微軟開發的軟體開發平臺,它提供了一個運行時環境(CLR - Common Language Runtime)和一套豐富的類庫(FCL - Framework Class Library)。CLR負責管理代碼的執行,而FCL則提供了大量預先編寫好的代碼, ...
  • 本章將和大家分享在ASP.NET Core中如何使用高級客戶端NEST來操作我們的Elasticsearch。 NEST是一個高級別的Elasticsearch .NET客戶端,它仍然非常接近原始Elasticsearch API的映射。所有的請求和響應都是通過類型來暴露的,這使得它非常適合快速上手 ...
  • 參考delphi的代碼更改為C# Delphi 檢測密碼強度 規則(仿 google) 仿 google 評分規則 一、密碼長度: 5 分: 小於等於 4 個字元 10 分: 5 到 7 字元 25 分: 大於等於 8 個字元 二、字母: 0 分: 沒有字母 10 分: 全都是小(大)寫字母 20 ...