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

JavaWeb?Listener?利用Session統(tǒng)計在線人數(shù)

 更新時間:2022年09月05日 14:05:02   作者:上進小菜豬  
這篇文章主要為大家介紹了JavaWeb?Listener?利用Session統(tǒng)計在線人數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一.監(jiān)聽器Listener

1.1 Listener的作用

Listener是一個功能組件,在創(chuàng)建、銷毀或添加、修改或刪除應用程序、會話和請求對象的屬性時自動執(zhí)行代碼。

監(jiān)聽器是servlet的監(jiān)聽器,它可以監(jiān)聽客戶端的請求和服務器的操作。

可以使用application,session,request這三個對象

1.2 小demo之統(tǒng)計在線人數(shù)

1.新建omline,繼承類HttpSessionListener,重寫sessionCreated和sessionDestroyed方法:

public class omline implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent se) {
    }
    public void sessionDestroyed(HttpSessionEvent se) {
    }
}

2.對于sessionCreated方法:

創(chuàng)建Session監(jiān)聽,可以查看用戶的一舉一動。一旦創(chuàng)建Session就會觸發(fā)這個方法!

對于sessionDestroyed方法:

銷毀session監(jiān)聽。一旦銷毀Session就會觸發(fā)這個方法!

3.創(chuàng)建servletContext對象,新建OnlineCount鍵值對。

ServletContext servletContext = se.getSession().getServletContext();
Integer omlinecount = (Integer) servletContext.getAttribute("OnlineCount");

判斷當前在線人數(shù),如果omlinecount為空的話,更新當前的在線人數(shù)為1。

if(omlinecount==null){
    omlinecount=new Integer(1);
}

如果現(xiàn)在人數(shù)不為空的話,將當前的人數(shù)加一。

else{
    int count = omlinecount.intValue();
    omlinecount=new Integer(count+1);
}

將當前人數(shù)存入鍵值對:

servletContext.setAttribute("OnlineCount",omlinecount);

4.銷毀session監(jiān)聽:

前面的代碼基本一樣,唯一不同的是,對于空值的判斷和非空的人數(shù)計算。

對于當前對象為空時,將其賦值為0。

if(omlinecount==null){
    omlinecount=new Integer(0);
}

當其不為0時,將其人數(shù)減一:

else{
    int count = omlinecount.intValue();
    omlinecount=new Integer(count-1);
}

5.注冊監(jiān)聽器,注冊監(jiān)聽器只需要一句話,如下:

<listener>
    <listener-class>main.java.omline</listener-class>
</listener>

6.在訪問的主頁面寫下jsp語句,引入java對象的值,實現(xiàn)輸出當前的在線人數(shù)。

<h2>
    當前有<span><%=this.getServletConfig().getServletContext().getAttribute("OnlineCount")%>人在線</span>
</h2>

7.啟動服務器,訪問主頁,得到結果如下:

1.3 統(tǒng)計結果錯誤原因分析

尋找原因,找到omline里的sessionCreated方法,寫一下輸出所有Session的ID

System.out.println(se.getSession().getId());

運行項目,觀察輸出臺:

9DF74823455F36EDA429B31938B5EEE5
2D248509C732D5C448DA1E57BE539E97

打開F12,網(wǎng)絡查看該用戶的Session:

可以看到,現(xiàn)在的Session是控制臺輸出的最后一個,說明第一個鏈接失敗,已經(jīng)被銷毀了。

如果我們重新發(fā)布改頁面:

刷新改頁面,繼續(xù)打開Session觀察如下:現(xiàn)在就變?yōu)榱艘蝗耍?/p>

注意:

如果我們使用一個游覽器兩個頁面都訪問該路徑,還是屬于一個任務的,在線人數(shù)算做一人。

如果我們打開不同的游覽器來訪問該url,這個這時候就會算做不同的用戶,分配不同的Sessionid給用戶。

步驟:

1.實現(xiàn)監(jiān)聽器的接口。重寫里面的方法!

2.配置監(jiān)聽器(xml里注冊監(jiān)聽器)。

以上就是JavaWeb Listener 利用Session統(tǒng)計在線人數(shù)的詳細內(nèi)容,更多關于JavaWeb Listener Session統(tǒng)計在線人數(shù)的資料請關注腳本之家其它相關文章!

相關文章

  • 2020最新版SSM框架整合教程

    2020最新版SSM框架整合教程

    這篇文章主要介紹了2020最新版SSM框架整合教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • java實現(xiàn)網(wǎng)站微信掃碼支付

    java實現(xiàn)網(wǎng)站微信掃碼支付

    這篇文章主要為大家詳細介紹了java實現(xiàn)網(wǎng)站微信掃碼支付,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • windows下jar包開機自動重啟的步驟

    windows下jar包開機自動重啟的步驟

    這篇文章主要給大家介紹了關于windows下jar包開機自動重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 理解Java垃圾回收

    理解Java垃圾回收

    這篇文章主要幫助大家理解Java垃圾回收,通過實例學習java垃圾回收,什么是垃圾回收,感興趣的小伙伴們可以參考一下
    2016-03-03
  • SpringBoot的三大開發(fā)工具小結

    SpringBoot的三大開發(fā)工具小結

    本文主要介紹了SpringBoot的三大開發(fā)工具,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-02-02
  • java實現(xiàn)時間控制的幾種方案

    java實現(xiàn)時間控制的幾種方案

    這篇文章主要介紹了java實現(xiàn)時間控制的幾種方案,本文從多個方面給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 一文帶你搞懂Java中的泛型和通配符

    一文帶你搞懂Java中的泛型和通配符

    泛型機制在項目中一直都在使用,甚至很多源碼中都用到了泛型機制。但是里面很多的機制和特性一直沒有明白,尤其通配符這塊,經(jīng)常忘記。本文對此做了一些總結,具有一定借鑒價值,希望有所幫助
    2022-09-09
  • 改變JAVA窗體屬性的操作方法

    改變JAVA窗體屬性的操作方法

    在本篇內(nèi)容里小編給大家詳細分析了關于改變JAVA窗體屬性的操作方法和步驟,需要的朋友們學習下。
    2018-12-12
  • 解決ObjectMapper序列換Map時候的坑

    解決ObjectMapper序列換Map時候的坑

    這篇文章主要介紹了解決ObjectMapper序列換Map時候的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java JDBC API介紹與實現(xiàn)數(shù)據(jù)庫連接池流程

    Java JDBC API介紹與實現(xiàn)數(shù)據(jù)庫連接池流程

    JDBC是指Java數(shù)據(jù)庫連接,是一種標準Java應用編程接口( JAVA API),用來連接 Java 編程語言和廣泛的數(shù)據(jù)庫。從根本上來說,JDBC 是一種規(guī)范,它提供了一套完整的接口,允許便攜式訪問到底層數(shù)據(jù)庫,本篇文章我們來了解JDBC API及數(shù)據(jù)庫連接池
    2022-12-12

最新評論