亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、什么是 Session 會(huì)話?

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

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

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

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

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

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

三、Session 域數(shù)據(jù)的存取

/**
* 往 Session 中保存數(shù)據(jù)
* @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("已經(jīng)往 Session 中保存了數(shù)據(jù)");
}
/**
* 獲取 Session 域中的數(shù)據(jù)
* @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 的數(shù)據(jù)是:" + attribute);
}

四、Session 生命周期控制

  • public void setMaxInactiveInterval(int interval)
    設(shè)置 Session 的超時(shí)時(shí)間(以秒為單位),超過指定的時(shí)長,Session 就會(huì)被銷毀。值為正數(shù)的時(shí)候,設(shè)定 Session 的超時(shí)時(shí)長。 負(fù)數(shù)表示永不超時(shí)(極少使用)
  • public int getMaxInactiveInterval()獲取 Session 的超時(shí)時(shí)間
  • public void invalidate() 讓當(dāng)前 Session 會(huì)話馬上超時(shí)無效。
  • Session 默認(rèn)的超時(shí)時(shí)長是多少!
    Session 默認(rèn)的超時(shí)時(shí)間長為 30 分鐘。
    因?yàn)樵?Tomcat 服務(wù)器的配置文件 web.xml中默認(rèn)有以下的配置,它就表示配置了當(dāng)前 Tomcat 服務(wù)器下所有的 Session 超時(shí)配置默認(rèn)時(shí)長為:30 分鐘。
 <session-config> <session-timeout>30</session-timeout> </session-config>

如果說。你希望你的 web 工程,默認(rèn)的 Session 的超時(shí)時(shí)長為其他時(shí)長。你可以在你自己的 web.xml 配置文件中做 以上相同的配置。就可以修改你的 web 工程所有 Seession 的默認(rèn)超時(shí)時(shí)長。

<!--表示當(dāng)前 web 工程。創(chuàng)建出來 的所有 Session 默認(rèn)是 20 分鐘 超時(shí)時(shí)長--> 
<session-config> 
<session-timeout>20</session-timeout>
 </session-config>

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

Session 超時(shí)的概念介紹:

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

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

然而,如果用戶在一段時(shí)間內(nèi)沒有任何活動(dòng),服務(wù)器會(huì)自動(dòng)將該會(huì)話標(biāo)記為過期。這樣做的原因是為了安全和資源管理考慮。如果一個(gè)會(huì)話保持長時(shí)間處于活動(dòng)狀態(tài),這可能會(huì)導(dǎo)致資源浪費(fèi)和安全風(fēng)險(xiǎn),因?yàn)槠渌丝赡芸梢岳迷摃?huì)話進(jìn)行非法操作。因此,通過設(shè)置會(huì)話超時(shí)時(shí)間,可以確保閑置會(huì)話在一段時(shí)間后自動(dòng)關(guān)閉,從而降低風(fēng)險(xiǎn)并釋放服務(wù)器資源。

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

總的來說,會(huì)話超時(shí)是會(huì)話管理的重要方面,有助于平衡用戶體驗(yàn)和安全性之間的關(guān)系。

  protected void life3(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 先獲取Session對(duì)象
        HttpSession session = req.getSession();
        // 設(shè)置當(dāng)前Session3秒后超時(shí)
        session.setMaxInactiveInterval(3);
        resp.getWriter().write("當(dāng)前Session已經(jīng)設(shè)置為3秒后超時(shí)");
    }

Session 馬上被超時(shí)示例:

 protected void deleteNow(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 先獲取Session對(duì)象
        HttpSession session = req.getSession();
        // 讓Session會(huì)話馬上超時(shí)
        session.invalidate();
        resp.getWriter().write("Session已經(jīng)設(shè)置為超時(shí)(無效)");
    }
 protected void defaultLife(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 獲取了Session的默認(rèn)超時(shí)時(shí)長
        int maxInactiveInterval = req.getSession().getMaxInactiveInterval();
        resp.getWriter().write("Session的默認(rèn)超時(shí)時(shí)長為:" + maxInactiveInterval + " 秒 ");
    }

五、Session的銷毀

在計(jì)算機(jī)科學(xué)和網(wǎng)絡(luò)編程中,"session"一詞可以指代多個(gè)概念,因此有幾種情況可能導(dǎo)致會(huì)話(session)銷毀。以下是一些常見的情況:

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

五、瀏覽器和 Session 之間關(guān)聯(lián)的技術(shù)內(nèi)幕

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

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

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

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

相關(guān)文章

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

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

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

    SpringBoot?HikariCP配置項(xiàng)及源碼解析

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

    深入理解Java責(zé)任鏈模式實(shí)現(xiàn)靈活的請(qǐng)求處理流程

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

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

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

    Java如何實(shí)現(xiàn)kaptcha網(wǎng)頁驗(yàn)證碼驗(yàn)證

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

    Java代碼審計(jì)的一些基礎(chǔ)知識(shí)你知道嗎

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

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

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

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

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

    mybatis if標(biāo)簽判斷不生效的解決方法

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

    Java匿名類和匿名函數(shù)的概念和寫法

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

最新評(píng)論