日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

瀏覽器關(guān)閉后,Session就銷毀了嗎?

 沙門空海 2017-09-15

       我們知道Session是JSP的九大內(nèi)置對(duì)象(也叫隱含對(duì)象)中的一個(gè),它的作用是可以保存當(dāng)前用戶的狀態(tài)信息,初學(xué)它的時(shí)候,認(rèn)為Session的生命周期是從打開一個(gè)瀏覽器窗口發(fā)送請(qǐng)求到關(guān)閉瀏覽器窗口,但其實(shí)這種說法是不正確的!當(dāng)一個(gè)Session開始時(shí),Servlet容器會(huì)創(chuàng)建一個(gè)HttpSession對(duì)象,那么在HttpSession對(duì)象中,可以存放用戶狀態(tài)的信息,Servlet容器為HttpSession對(duì)象分配一個(gè)唯一標(biāo)識(shí)符即Sessionid,Servlet容器把Sessionid作為一種Cookie保存在客戶端的瀏覽器 中用戶每次發(fā)出Http請(qǐng)求時(shí),Servlet容器會(huì)從HttpServletRequest對(duì)象中取出Sessionid,然后根據(jù)這個(gè)Sessionid找到相應(yīng)的HttpSession對(duì)象,從而獲取用戶的狀態(tài)信息。

       其實(shí)讓Session結(jié)束生命周期,有以下兩種辦法:

       一個(gè)是Session.invalidate()方法,不過這個(gè)方法在實(shí)際的開發(fā)中,并不推薦,可能在強(qiáng)制注銷用戶的時(shí)候會(huì)使用;

       一個(gè)是當(dāng)前用戶和服務(wù)器的交互時(shí)間超過默認(rèn)時(shí)間后,Session會(huì)失效。

       我們知道Session是存在于服務(wù)器端的,當(dāng)把瀏覽器關(guān)閉時(shí),瀏覽器并沒有向服務(wù)器發(fā)送任何請(qǐng)求來關(guān)閉Session,自然Session也不會(huì)被銷毀,但是可以做一點(diǎn)努力,在所有的客戶端頁面里使用js的window.onclose來監(jiān)視瀏覽器的關(guān)閉動(dòng)作,然后向服務(wù)器發(fā)送一個(gè)請(qǐng)求來關(guān)閉Session,但是這種做法在實(shí)際的開發(fā)中也是不推薦使用的,最正常的辦法就是不去管它,讓它等到默認(rèn)的時(shí)間后,自動(dòng)銷毀。那么為什么當(dāng)我們關(guān)閉瀏覽器后,就再也訪問不到之前的session了呢?其實(shí)之前的Session一直都在服務(wù)器端,而當(dāng)我們關(guān)閉瀏覽器時(shí),此時(shí)的Cookie是存在于瀏覽器的進(jìn)程中的,當(dāng)瀏覽器關(guān)閉時(shí),Cookie也就不存在了。

       其實(shí)Cookie有兩種:

       一種是存在于瀏覽器的進(jìn)程中;

       一種是存在于硬盤上。

       而session的Cookie是存在于瀏覽器的進(jìn)程中,那么這種Cookie我們稱為會(huì)話Cookie,當(dāng)我們重新打開瀏覽器窗口時(shí),之前的Cookie中存放的Sessionid已經(jīng)不存在了,此時(shí)服務(wù)器從tpServletRequest對(duì)象中沒有檢查到sessionid,服務(wù)器會(huì)再發(fā)送一個(gè)新的存有Sessionid的Cookie到客戶端的瀏覽器中,此時(shí)對(duì)應(yīng)的是一個(gè)新的會(huì)話,而服務(wù)器上原先的session等到它的默認(rèn)時(shí)間到之后,便會(huì)自動(dòng)銷毀。


附加:

當(dāng)在同一個(gè)瀏覽器中同時(shí)打開多個(gè)標(biāo)簽,發(fā)送同一個(gè)請(qǐng)求或不同的請(qǐng)求,仍是同一個(gè)session;

當(dāng)不在同一個(gè)窗口中打開相同的瀏覽器時(shí),發(fā)送請(qǐng)求,仍是同一個(gè)session;

當(dāng)使用不同的瀏覽器時(shí),發(fā)送請(qǐng)求,即使發(fā)送相同的請(qǐng)求,是不同的session;

當(dāng)把當(dāng)前某個(gè)瀏覽器的窗口全關(guān)閉,再打開,發(fā)起相同的請(qǐng)求時(shí),是不同的session。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多