欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaWeb實現(xiàn)Session跨頁面?zhèn)鬟f數據

 更新時間:2023年07月17日 15:36:45   作者:_GGBond_  
本文主要介紹了 JavaWeb實現(xiàn)Session跨頁面?zhèn)鬟f數據,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一、什么是 Session 會話?

  • Session 就一個接口(HttpSession)。
  • Session 就是會話。它是用來維護一個客戶端和服務器之間關聯(lián)的一種技術。
  • 每個客戶端都有自己的一個 Session 會話。
  • Session 會話中,我們經常用來保存用戶登錄之后的信息。

二、如何創(chuàng)建 Session 和獲取(id 號,是否為新)

如何創(chuàng)建和獲取 Session。它們的 API 是一樣的。

request.getSession() 第一次調用是:創(chuàng)建 Session 會話之后調用都是:獲取前面創(chuàng)建好的 Session 會話對象。

isNew()判斷到底是不是剛創(chuàng)建出來的(新的)true 表示剛創(chuàng)建false 表示獲取之前創(chuàng)建

每個會話都有一個身份證號。也就是 ID 值。而且這個 ID 是唯一的。 getId() 得到 Session 的會話 id 值。

三、Session 域數據的存取

/**
* 往 Session 中保存數據
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
req.getSession().setAttribute("key1", "value1");
resp.getWriter().write("已經往 Session 中保存了數據");
}
/**
* 獲取 Session 域中的數據
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
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 工程。創(chuàng)建出來 的所有 Session 默認是 20 分鐘 超時時長--> 
<session-config> 
<session-timeout>20</session-timeout>
 </session-config>

如果你想只修改個別 Session 的超時時長。就可以使用上面的 API。setMaxInactiveInterval(int interval)來進行單獨的設 置。session.setMaxInactiveInterval(int interval)單獨設置超時時長。

Session 超時的概念介紹:

Session的超時是指在一段時間內沒有活動或用戶不再與服務器進行交互時,會話數據將自動過期失效。在Web開發(fā)中,會話是用來跟蹤用戶在網站上的活動狀態(tài)的一種機制。當用戶登錄到網站或應用程序時,服務器會為其創(chuàng)建一個會話,并分配一個唯一的會話ID。該會話ID通常存儲在一個名為"session cookie"的小文件中,發(fā)送給用戶的瀏覽器。

每當用戶與服務器進行交互(例如訪問頁面,提交表單,或者與應用程序進行交互),服務器都會根據會話ID來識別用戶,并根據需要更新會話數據。會話數據可能包括用戶登錄信息、購物車內容、用戶偏好設置等等。

然而,如果用戶在一段時間內沒有任何活動,服務器會自動將該會話標記為過期。這樣做的原因是為了安全和資源管理考慮。如果一個會話保持長時間處于活動狀態(tài),這可能會導致資源浪費和安全風險,因為其他人可能可以利用該會話進行非法操作。因此,通過設置會話超時時間,可以確保閑置會話在一段時間后自動關閉,從而降低風險并釋放服務器資源。

會話超時時間可以根據具體的應用場景和安全需求進行配置。通常,銀行或其他敏感信息應用可能會設置較短的會話超時時間,以增加安全性。而在一些社交媒體或新聞網站等應用中,可能會設置較長的會話超時時間,以提供更好的用戶體驗。

總的來說,會話超時是會話管理的重要方面,有助于平衡用戶體驗和安全性之間的關系。

  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已經設置為超時(無效)");
    }
 protected void defaultLife(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 獲取了Session的默認超時時長
        int maxInactiveInterval = req.getSession().getMaxInactiveInterval();
        resp.getWriter().write("Session的默認超時時長為:" + maxInactiveInterval + " 秒 ");
    }

五、Session的銷毀

在計算機科學和網絡編程中,"session"一詞可以指代多個概念,因此有幾種情況可能導致會話(session)銷毀。以下是一些常見的情況:

  • 用戶主動注銷:當用戶選擇退出當前會話時,會話會被銷毀。這可以在網站或應用程序中通過點擊"注銷"或"退出"按鈕來實現(xiàn)。
  • 用戶關閉瀏覽器會話:當關閉當前瀏覽器窗口時,會話(session)通常會被銷毀,但這取決于具體的實現(xiàn)方式和配置。在大多數情況下,當用戶關閉瀏覽器窗口時,瀏覽器會自動刪除與該會話相關的會話標識符(session ID)和會話數據。這導致服務器上的會話失效并被銷毀。當用戶再次打開瀏覽器并訪問相同的網站時,將會創(chuàng)建一個新的會話。然而,需要注意的是,瀏覽器的行為可以受到不同因素的影響。例如,瀏覽器可能提供"恢復會話"的功能,使用戶能夠重新打開上次關閉的窗口并繼續(xù)之前的會話。在這種情況下,會話可能不會立即銷毀。此外,開發(fā)人員也可以通過在會話中設置持久性的 cookie 或其他技術來實現(xiàn)會話的跨會話保留。這樣,即使關閉瀏覽器窗口,會話數據仍然可以在下次打開瀏覽器時恢復。但這不是會話的標準行為,而是開發(fā)人員根據需求進行的特定實現(xiàn)。因此,總的來說,關閉當前瀏覽器窗口通常會導致會話被銷毀,但具體行為可能會受到瀏覽器配置、會話管理策略以及開發(fā)人員實現(xiàn)的影響。
  • 會話超時:為了提高安全性,許多系統(tǒng)會設置會話超時時間。如果在一段時間內沒有用戶活動,會話可能會被銷毀。超時時間可以是固定的(例如,30分鐘)或根據用戶活動動態(tài)調整。
  • 服務器重啟或崩潰:如果服務器在會話期間發(fā)生重啟或崩潰,所有當前活動的會話通常都會被銷毀。在服務器重新啟動后,用戶需要重新建立新的會話。
  • 并發(fā)限制:某些系統(tǒng)可能對同時活動的會話數進行限制。如果達到了最大并發(fā)會話數,新的會話請求可能會導致舊的會話被銷毀,以便為新會話騰出空間。
  • 安全性事件:如果系統(tǒng)檢測到會話被破壞、會話劫持或其他安全性事件,它可能會立即銷毀相關的會話。

五、瀏覽器和 Session 之間關聯(lián)的技術內幕

瀏覽器和Session之間的關聯(lián)涉及到幾個關鍵技術內幕。在Web開發(fā)中,會話(Session)是一種在服務器和瀏覽器之間跟蹤用戶狀態(tài)的機制。以下是瀏覽器和Session之間關聯(lián)的技術內幕:

  • Cookie:Cookie是存儲在用戶瀏覽器中的小型文本文件,由服務器通過HTTP響應頭發(fā)送給瀏覽器,并在后續(xù)的請求中通過HTTP請求頭傳回給服務器。Cookie通常包含會話ID等信息,用于標識用戶的會話狀態(tài)。服務器可以使用這個會話ID來識別用戶,并維護用戶的會話數據。
  • Session ID:當用戶首次訪問一個使用Session的網站時,服務器會為用戶生成一個唯一的Session ID。這個Session ID通常被存儲在一個名為"session cookie"的Cookie中,它會隨著每個請求發(fā)送回服務器,以便服務器能夠識別和管理用戶的會話狀態(tài)。
  • 會話管理:服務器使用會話管理技術來跟蹤和管理用戶的會話狀態(tài)。一旦用戶通過Cookie提供了Session ID,服務器就可以將該Session ID與會話數據相關聯(lián),并在后續(xù)的請求中使用該ID來識別用戶。
  • 會話數據:服務器可以將用戶特定的數據存儲在會話中,如登錄狀態(tài)、購物車內容、用戶偏好設置等。這些會話數據在用戶與服務器之間的多個請求之間持久存在,從而提供了連續(xù)和一致的用戶體驗。
  • 會話超時:為了安全和資源管理,會話通常有一個超時機制。服務器可以設置會話的最大時長,在用戶一段時間內沒有活動時,會話將被標記為過期并自動失效。

總體來說,瀏覽器和Session之間的關聯(lián)是通過Cookie技術實現(xiàn)的。Cookie中存儲的Session ID允許服務器識別用戶,并跟蹤和管理用戶的會話狀態(tài)。這樣,服務器可以為每個用戶提供個性化和連續(xù)的服務,而不需要每次都重新驗證身份或重復操作。

到此這篇關于 JavaWeb實現(xiàn)Session跨頁面?zhèn)鬟f數據的文章就介紹到這了,更多相關 JavaWeb Session跨頁面?zhèn)鬟f內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Springboot Apollo配置yml的問題及解決方案

    Springboot Apollo配置yml的問題及解決方案

    這篇文章主要介紹了Springboot Apollo配置yml的問題及解決方案,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • SpringBoot?HikariCP配置項及源碼解析

    SpringBoot?HikariCP配置項及源碼解析

    這篇文章主要為大家介紹了SpringBoot?HikariCP配置項及源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 深入理解Java責任鏈模式實現(xiàn)靈活的請求處理流程

    深入理解Java責任鏈模式實現(xiàn)靈活的請求處理流程

    本文詳細介紹了Java中的責任鏈模式,幫助您理解其工作原理,以及如何在代碼中實現(xiàn)。該模式可以將請求沿著處理鏈路傳遞,實現(xiàn)靈活的請求處理流程。通過本文的學習,您將獲得在Java應用程序中使用責任鏈模式的知識和技能
    2023-04-04
  • MyBatis-Plus Sequence主鍵的實現(xiàn)

    MyBatis-Plus Sequence主鍵的實現(xiàn)

    這篇文章主要介紹了MyBatis-Plus Sequence主鍵的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Java如何實現(xiàn)kaptcha網頁驗證碼驗證

    Java如何實現(xiàn)kaptcha網頁驗證碼驗證

    在做關于SSM項目之商鋪系統(tǒng)時,了解到了kaptcha實現(xiàn)網頁驗證碼驗證,感覺就很有趣,所以便開始學習記錄了起來,復制粘貼即可用
    2025-01-01
  • Java代碼審計的一些基礎知識你知道嗎

    Java代碼審計的一些基礎知識你知道嗎

    這篇文章主要介紹了基于Java的代碼審計功能的基礎知識,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-09-09
  • java中List移除元素的四種方式

    java中List移除元素的四種方式

    本文主要介紹了java中List移除元素的四種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • Spring?MVC中的Controller進行單元測試的實現(xiàn)

    Spring?MVC中的Controller進行單元測試的實現(xiàn)

    本文主要介紹了如何對Spring?MVC中的Controller進行單元測試的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • mybatis if標簽判斷不生效的解決方法

    mybatis if標簽判斷不生效的解決方法

    這篇文章主要介紹了mybatis if標簽判斷不生效的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Java匿名類和匿名函數的概念和寫法

    Java匿名類和匿名函數的概念和寫法

    匿名函數寫法和匿名類寫法的前提必須基于函數式接口匿名函數寫法和匿名類寫法其本質是同一個東西,只是簡化寫法不同使用Lambda表達式簡寫匿名函數時,可以同時省略實現(xiàn)類名、函數名,這篇文章主要介紹了Java匿名類和匿名函數的概念和寫法,需要的朋友可以參考下
    2023-06-06

最新評論