1. 程式人生 > >【使用者線上統計】如何處理瀏覽器關閉時候的session清理問題

【使用者線上統計】如何處理瀏覽器關閉時候的session清理問題

線上使用者統計是用HttpSessionBindingListener實現的,將例項化的類放到session物件中,

request.getSession().setAttribute("onlineUserListener", onlineUserListener);

HttpSessionBindingListener內有兩個方法valueBound(HttpSessionBindingEvent event)和valueUnbound(HttpSessionBindingEvent event),前者為資料繫結,後者為取消繫結。在建立和銷燬session的時候,分別呼叫。

問題在於,正常的退出,是可以將session銷燬從而進入valueUnbound方法進行邏輯處理的,但是如果直接關閉瀏覽器,就無法得到session的銷燬事件,沒有辦法進行記錄。

最早使用的是window.unonload方法,在頁面關閉時候可以在這個方法中呼叫一個action,在action中將session置為無效。但是這種實現最大的問題是,頁面重新整理unonload方法一樣會呼叫,會造成session無效的重新登入。

如何能夠判斷unonload方法的呼叫是重新整理還是關閉,可以分辨何時呼叫session無效的請求。

利用onbeforeunload ,是在onunload前觸發的事件,在全域性新增變數,在觸發onbeforeunload記錄時間,根據時間差來判斷是關閉還是重新整理。

var _beforeUnload_time = 0, _gap_time = 0;

    window.onunload = function (){
        _gap_time = new Date().getTime() - _beforeUnload_time;
        // console.log(_gap_time);
        if(_gap_time <= 5)
        page_unload()
    };
    window.onbeforeunload = function (){
        _beforeUnload_time = new Date().getTime();
    };

相關推薦

使用者線上統計如何處理瀏覽器關閉時候的session清理問題

線上使用者統計是用HttpSessionBindingListener實現的,將例項化的類放到session物件中, request.getSession().setAttribute("onlineUserListener", onlineUserListener); H

ASP.NET Core處理異常(上篇)

關心 指向 然而 sub 相關 pri roo epon netcore 依照老周的良好作風,開始之前先說點題外話。 前面的博文中,老周介紹過自定義 MVC 視圖的搜索路徑,即向 ViewLocationFormats 列表添加相應的內容,其實,對 Razor Page

MySQL技術內幕10-啟動關閉與恢復

InnoDB是 MySQL資料庫的儲存引擎之一,因此 InnoDB儲存引擎的啟動和關閉,更準確的是指在 MySQL例項的啟動過程中對 InnoDB儲存引擎的處理過程。 在關閉時,引數 innodb fast shutdown影響著表的儲存引擎為 InnoDB的行為該引數可取值

你想不到的!CSS 實現的各種球體效果線上演示

  CSS 可以實現很多你想不到的效果,今天我們來嘗試使用 CSS 實現各種球體效果。有兩種方法可以實現,第一種是使用大量的元素建立實際的 3D 球體,這種方法有潛在的效能問題;另外一種是使用 CSS3 漸變和陰影特性來實現,實現方法簡單,效果精美。   為保證效果,請使用 Chrome、Firefox、S

概率與統計正態分佈(Normal Distribution)

連續型隨機變數最常用的分佈就是 正態分佈(normal distribution),也稱為高斯分佈(Gaussian distribution): N(x;μ,σ2)=12πσ2−−−−√exp(−12σ2(x−μ)2)N(x;μ,σ2)=12πσ2exp(−1

公益線上自習室不連麥,無微信群,無qq群

馬上就要到5月了,從剛開始的放縱已經逐漸變得慌亂。 疫情還沒有完全過去,居家學習、工作是最好的選擇。 但是,問題是,在家太舒服了,一點也不想學習。   一開始“哈哈哈哈哈哈哈哈”朋友了,現在已經開始“唉……”了。   我—— 不想用番茄Todo、不想用Forest、timing等等 不能

Web入門系列初探會話管理-Session

特點 會話資料儲存在伺服器端。 Session技術核心 1、建立或得到session物件   HttpSession getSession()     HttpSession getSession(boolean create)   2、設定session物

Java程式設計思想5.初始化與清理

構造器就是在建立物件的時候被自動呼叫的特殊方法。 Java 在提供構造器的基礎上,額外提供“垃圾回收器”。控制物件從生命週期開始到結束。 5.1 用構造器確保初始化 建立物件時,Java 會在使用者有能力操作物件之前自動呼叫構造器,保證初始化進行。 5.2

認證與授權2、基於session的認證方式

這一篇將通過一個簡單的`web`專案實現基於`Session`的認證授權方式,也是以往傳統專案的做法。 *先來複習一下流程* > 使用者認證通過以後,在服務端生成使用者相關的資料儲存在當前會話`(Session)`中,發給客戶端的資料將通過`session_id `存放在`cookie`中。在後續的請求操作

線上直播流式處理新秀Flink原理與實踐

▼ FMI線上直播 分享主題:流式處理新秀Flink原理與實踐 內容大綱 隨著大資料技術的在各行各業的廣泛使用,要求能對海量資料進行實時處理的需求越來越多,同時資料處理的業務

selenium如何關閉瀏覽器中新開啟的標籤頁精華原創帖

最近在用selenium做自動化時遇到了一個問題,那就是當我在當前頁面點選了一個連結之後,彈出一個新的頁籤來展示內容,而不是在當前頁面展示,而我要做的就是關閉這個新開啟的頁籤,因為我後續的操作是基於有連結的那個頁面的。 經過多次思考和選擇,終於將其解決。下面分享給各位小夥伴

正確處理瀏覽器在下載文件時HTTP頭的編碼問題(Content-Disposition)

彈出 強調 header tex 不一定 瀏覽器支持 接下來 解決方案 兼容 最近在做項目時遇到了一個 case :需要實現一個強制在瀏覽器中的下載功能(即強制讓瀏覽器彈出下載對話框),並且文件名必須保持和用戶之前上傳時相同(可能包含非 ASCII 字符)。 前一個需求很容

正確處理瀏覽器在下載檔案時HTTP頭的編碼問題(Content-Disposition)

最近在做專案時遇到了一個 case :需要實現一個強制在瀏覽器中的下載功能(即強制讓瀏覽器彈出下載對話方塊),並且檔名必須保持和使用者之前上傳時相同(可能包含非 ASCII 字元)。 前一個需求很容易實現:使用 HTTP Header 的 Content-Disposition: attachment 即可,

Yii系列處理請求

入口 實現 官方 cookie this sender att 只需要 ota 緣起 這一章是Yii系列的第三章,前兩章給大夥講解了Yii2.0的安裝與Yii2.0的基本框架及基礎概念,傳送門: 【Yii2.0的安裝與調試】:http://www.cnblogs.com/r

強連通分量縮點拓撲排序dp預處理CDOJ1640 花自飄零水自流,一種相思,兩處閑愁。

如果 vector brush algo blog pri cmp 處理 ret 題意: 在n個點m條邊的有向圖上,從1出發的回路最多經過多少個不同的點 可以在一條邊上逆行一次 題解: 在同一個強連通分量中,顯然可以經過當中的每一個點 因此先將強連通分量縮點,點權為強連通分

基礎水題統計單詞個數

int pan 一個 else art 個數 print urn 是不是 1 //1.統計單詞的個數 2 #include <stdio.h> 3 int main(void) 4 { 5 int i, flag = 0, number =

Android進階(3)Android圖像處理

progress chang etc geo xtend static ogr arch 取出 1. 概念 色調/色相:物體傳遞的顏色 飽和度:顏色的純度,從0(灰)到100%(飽和)來進行描寫敘述 亮度/明度:顏色的相對明暗程度 2. 調整圖像小Demo 創建一個

leetcode 字符串處理Compare Version Numbers

author 大小 pac tex onos article padding pop 題意 【leetcode 字符串處理】Compare Version Numbers @author:wepon @blog:http://blog.csdn.net/u0121

代碼學習PYTHON 異常處理

上下文 當前 異常處理 通過 工作 相同 try語句 標記 異常信息 一、什麽是異常   在程序執行過程中可能會影響程序的正常執行,一般情況下,在python無法正常處理程序時就會發生一個異常   當python腳本發生異常時我們需要捕獲處理他,否則程序會終止執行 二、異常

Linux相識相知文本處理工具之grepegrepfgrep及正則表達式

搜索字符串 變量 git cnblogs game home 表示 leg roo 常說Linux上有文本處理的三劍客,grep、sed和awk,本文就grep做出詳細的描述,並引出正則表達式。 grep NAME:打印模式匹配的行 SYNOPISIS: