黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Session超時問題詳解

Session超時問題詳解

更新時間:2021-08-04 16:18:33 來源:動力節(jié)點 瀏覽3652次

眾所周知,當用戶登錄網(wǎng)站后較長一段時間沒有與服務器進行交互,將會導致服務器上的用戶會話數(shù)據(jù)(即session)被銷毀。此時,當用戶再次操作網(wǎng)頁時,如果服務器進行了session校驗,那么瀏覽器將會提醒用戶session超時。

那么,如何解決用戶登錄后較長時間未操作而導致的session失效的問題呢?

導致這個問題的關鍵詞有兩個:一個是“長時間”,一個是“未操作”。

1.如果用戶未操作的“長時間”超過了服務器配置的session超時時間,并導致session失效,那么我們延長session的超時時間,讓用戶原來的“長時間”與超時時間相比,變得不“長”,不就可以解決了嗎?

2.如果用戶是長時間“未操作”導致session失效,那么我們想辦法產(chǎn)生“操作”,讓用戶每隔一小段時間就“操作”一次,與服務器產(chǎn)生交互,那么session自然也不會失效。

一般情況下下,我們首先想到的是,通過改變服務器的配置,延長服務器的session超時時間。

例如,在Tomcat服務器的web.xml文件中有如下節(jié)點內(nèi)容:

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

這里的30表示session的超時時間,單位為分鐘,如果用戶登錄后在30分鐘內(nèi)沒有與服務器交互,那么當前用戶的session將失效。我們可以配置一個更大的數(shù)值(比如60),就可以延長session的超時時間,如果將該值改為0或負數(shù)的話,則表示session永不失效。

不過在實際的工作應用中,一味地上調(diào)session的超時時間設置并不怎么常見,大多數(shù)需要實現(xiàn)該功能的網(wǎng)站都將解決問題的焦點集中在第二條思路上。例如:一些在線網(wǎng)站均采用定時刷新頁面的方法來防止session超時。

定時刷新頁面,最常見的有兩種實現(xiàn)方式:一種是通過JavaScript + HTML DOM,另一種則是通過meta標簽來實現(xiàn)。

function refresh(seconds){
    setTimeout("self.location.reload()", seconds * 1000);
}
refresh(600);  //調(diào)用方法啟動定時刷新,數(shù)值單位:秒。

在頁面中添加meta標簽refresh也可以指定每隔指定時間就刷新當前頁面,示例代碼如下:

<meta http-equiv="refresh" content="600" />

上述meta標簽可以實現(xiàn)每過600秒就刷新一次當前頁面。

在上述兩種方案中,較好的為第二種,因為如果當前頁面是在IE瀏覽器的模式窗口中打開的,默認情況下,self.location.reload()方法將會失效,而refresh meta標簽在IE模式窗口下仍然有效。

上述兩種方式都實現(xiàn)了刷新當前頁面,并且使用起來非常簡單,不過很遺憾的是,它們存在一種幾乎致命的缺陷。 試想一下,如果在論壇發(fā)帖等需要用戶輸入內(nèi)容的頁面,用戶花費較長的時間輸入了許多文本內(nèi)容,可是突然遇到了一個定時頁面刷新,結果用戶輸入的所有內(nèi)容都沒了,估計這個時候用戶連掐死你的心都有了……

因此我們需要在當前頁面本身不刷新、不影響用戶的任何操作的情況下實現(xiàn)定時刷新。最常見的解決方法仍然有兩種。
一種是在當前頁面添加一個隱藏的iframe,然后在該iframe里面實現(xiàn)定時刷新。

<iframe id="hidden_iframe" style="display:none;" scrolling="no" frameborder="0" name=" hidden_iframe " src="ping.php"></iframe>

此外,我們需要在服務器上編寫對應的請求響應代碼,例如ping.php中可以編寫如下代碼:

<?php
//每隔600秒刷新當前頁面
echo '<html><head><meta http-equiv="refresh" content="600" /></head><body></body></html>';
?>
另外一種則是使用JavaScript Image對象來實現(xiàn)定時刷新,JavaScript代碼如下:

function autoRefresh(seconds){
    if(typeof period == "undefined"){   //如果是第一次執(zhí)行
        period = seconds * 1000;    //定義全局變量period
        var bodyDOM = document.getElementsByTagName("body")[0];
        if(bodyDOM){
            bodyDOM.innerHTML += '<img id="auto_refresh_img" src="" style="display:none" />';   //添加隱藏的圖片
            imgDOM = document.getElementById("auto_refresh_img");   //定義全局Image對象
        }
    }
    if(typeof imgDOM != "undefined"){
        imgDOM.src = "ping.php?sid=" + new Date().getTime();    //防止緩存
        setTimeout("autoRefresh(" + seconds + ")", period);     
    }
}
autoRefresh(600);   //調(diào)用方法啟動定時刷新

和使用iframe來實現(xiàn)定時刷新一樣,使用JavaScript Image對象實現(xiàn)定時刷新,也需要在服務器端編寫類似的請求響應代碼。服務器的響應可以是文字等非圖片內(nèi)容,非圖片內(nèi)容只會造成圖像加載失敗,而我們的圖像標簽本身就是隱藏的,不管是加載成功還是失敗都不會顯示,畢竟我們的主要目的是發(fā)送請求給服務器,讓服務器保持session處于活動狀態(tài)。

當然,我們還可以使用Ajax來實現(xiàn)定時刷新,不過使用Image對象會更好一些,因為有些老式瀏覽器的JavaScript無法實現(xiàn)Ajax,但是卻可以使用Image對象。此外,使用Ajax需要編寫更多的代碼來處理XMLHttpRequest等對象的活動。

在上述兩種方式中,各有其優(yōu)缺點。

使用iframe標簽實現(xiàn)定時刷新的優(yōu)點是:不需要編寫JavaScript代碼,可以在瀏覽器禁用JavaScript的情況下實現(xiàn)定時刷新;其缺點是:在某些不支持iframe標簽的老式瀏覽器中沒有效果,此外,iframe標簽在瀏覽器中新增加了一個獨立的頁面,即使沒有顯示出來,不過其內(nèi)部解析的windowdocument等對象仍然存在,占用的瀏覽器內(nèi)存相對較多。

使用Image對象的優(yōu)點是:與iframe相比,占用的內(nèi)存相對較少,支持Image的瀏覽器也相對較多(現(xiàn)代瀏覽器均支持);缺點是:在瀏覽器禁用JavaScript的情況下就毫無用武之地了。

開發(fā)人員應根據(jù)實際需求情況來確定使用何種實現(xiàn)方式更好。此外,服務器在響應定時刷新的請求時,在滿足要求的情況下,應返回盡可能少的數(shù)據(jù),以節(jié)省帶寬。

以上就是動力節(jié)點小編介紹的"Session超時問題詳解",希望對大家有幫助,想了解更多可查看Session執(zhí)行原理。動力節(jié)點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 狠狠色狠色综合曰曰 | 亚洲精品动漫在线观看 | 曰批女人视频在线观看 | 亚洲视频精品 | 欧美视频在线一区二区三区 | 亚洲天堂成人在线观看 | 黄网站免费视频 | a级高清观看视频在线看 | 99精品视频在线播放2 | 韩国一区二区三区 | tk视频丨vk| 成人免费网站视频ww | 一个人晚上在线观看的免费视频 | 一本久道久久综合中文字幕 | 视频一本大道香蕉久在线播放 | 日韩在线a视频免费播放 | 好吊色视频在线观看 | 一级毛片aaa | 在线亚洲欧美 | 一区二区影院 | 欧美一区不卡二区不卡三区 | 国产无遮挡又爽又色又刺激 | 国产短视频精品一区二区三区 | 国产亚洲精品成人久久网站 | 国产午夜精品不卡视频 | 免费一级毛片视频 | 免费国产a国产片高清 | 久久国产欧美 | 亚洲欧洲精品视频在线观看 | 日韩三级一区 | 国产成人精品福利网站在线观看 | 五月天中文在线 | 污视频黄| 久久怡红院国产精品 | 日韩欧美一区二区不卡 | 欧美视频一区二区三区 | 欧美一区二区不卡视频 | 日韩精品三级 | 大柠檬导航香蕉导航巨人导航 | 可以直接看的av网址站 | 天堂欧美|