SpringMVC(3)-request域和session域的作用和區別

marigo發表於2024-05-03

最近看到專案中用到request域和session域,腦子裡一直沒有一個明確的區分,結合GPT整理了一份總結。
為了理解request和session的作用和區別,可以想象我們正在參加一個大型的科技會議。會議中,每位與會者(使用者)都會與會議工作人員(伺服器)進行交流。在這個比喻中,request域和session域是用於儲存與會者資訊和交流內容的兩種不同的儲存空間

Request域

  • Request域是如同與會者和工作人員的一次對話記錄。這個對話記錄僅在當前的對話中有效,對話結束後,所有記錄都會被清除。
  • 在Web開發中,request域代表一個HTTP請求的生命週期。它用於儲存處理一次HTTP請求過程中的資訊。
    我們在會議中向工作人員提出了一個問題,比如詢問某個會場的位置。工作人員給我們指路後,這次對話結束,他們就可能會忘記這個交流(即資訊不會被儲存到下一次對話)。

Session域

  • Session域則像是與會者的隨身揹包。在整個會議期間,你可以在揹包中存放個人物品(資訊),比如你的名片、筆記本或會議手冊。只要會議還沒結束,你隨時可以取用。
  • 在Web開發中,session域用於儲存跨多個請求或瀏覽器與伺服器的互動過程中需要保持的資訊。它在使用者開啟瀏覽器並訪問伺服器到關閉瀏覽器或session過期時一直有效。
    我們在會議的第一天收到了一份會議日程表,將它放入揹包中。無論我們何時需要檢視日程,只需開啟揹包取出即可。這份日程表會伴隨整個會議,直到會議結束。

區別

  • 生命週期:request域的生命週期僅限於一次HTTP請求,而session域的生命週期可以跨多次HTTP請求,直至使用者關閉瀏覽器或session過期。
  • 儲存範圍:request域僅在當前請求中有效,用於儲存處理該請求所需的資訊。而session域為使用者在多次請求間共享的資訊提供儲存空間,如使用者登入狀態、偏好設定等。

相關文章