最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一.監(jiān)聽器Listener

1.1 Listener的作用

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

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

可以使用application,session,request這三個(gè)對象

1.2 小demo之統(tǒng)計(jì)在線人數(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ā)這個(gè)方法!

對于sessionDestroyed方法:

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

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

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

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

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

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

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

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

servletContext.setAttribute("OnlineCount",omlinecount);

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

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

對于當(dāng)前對象為空時(shí),將其賦值為0。

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

當(dāng)其不為0時(shí),將其人數(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對象的值,實(shí)現(xiàn)輸出當(dāng)前的在線人數(shù)。

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

7.啟動服務(wù)器,訪問主頁,得到結(jié)果如下:

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

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

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

運(yùn)行項(xiàng)目,觀察輸出臺:

9DF74823455F36EDA429B31938B5EEE5
2D248509C732D5C448DA1E57BE539E97

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

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

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

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

注意:

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

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

步驟:

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

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

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

相關(guān)文章

  • Spring整合quartz做定時(shí)任務(wù)的示例代碼

    Spring整合quartz做定時(shí)任務(wù)的示例代碼

    這篇文章主要介紹了在spring項(xiàng)目使用quartz做定時(shí)任務(wù),首先我這里的項(xiàng)目已經(jīng)是一個(gè)可以跑起來的完整項(xiàng)目,web.xml里面的配置我就不貼出來了,具體實(shí)例代碼跟隨小編一起看看吧
    2022-01-01
  • idea注解參數(shù)換行時(shí)間日期格式設(shè)置方法

    idea注解參數(shù)換行時(shí)間日期格式設(shè)置方法

    這篇文章主要介紹了idea注解參數(shù)換行時(shí)間日期格式設(shè)置方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 值得收藏的2017年Java開發(fā)崗位面試題

    值得收藏的2017年Java開發(fā)崗位面試題

    這篇文章主要為大家推薦一份值得收藏的2017年Java開發(fā)崗位面試題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 關(guān)于eclipse安裝spring插件報(bào)錯An error occurred while collecting items to be installed...解決方案

    關(guān)于eclipse安裝spring插件報(bào)錯An error occurred while collecting item

    這篇文章主要介紹了關(guān)于eclipse安裝spring插件報(bào)錯An error occurred while collecting items to be installed...解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • SpringCloud整合Netty集群實(shí)現(xiàn)WebSocket的示例代碼

    SpringCloud整合Netty集群實(shí)現(xiàn)WebSocket的示例代碼

    文章主要介紹了SpringCloud整合Netty集群實(shí)現(xiàn)WebSocket的相關(guān)內(nèi)容,包括服務(wù)注冊和發(fā)現(xiàn)中心的配置,如使用Nacos、CommandLineRunner啟動Netty服務(wù)等,還介紹了通過Redis實(shí)現(xiàn)消息發(fā)布訂閱的機(jī)制,需要的朋友可以參考下
    2024-11-11
  • Java注解詳解及實(shí)現(xiàn)自定義注解的方法

    Java注解詳解及實(shí)現(xiàn)自定義注解的方法

    這篇文章主要介紹了Java注解詳解及實(shí)現(xiàn)自定義注解的方法,本文給大家介紹了jdk中預(yù)定義的一些注解及自定義注解的相關(guān)知識,需要的朋友可以參考下
    2022-06-06
  • java跳板執(zhí)行ssh命令方式

    java跳板執(zhí)行ssh命令方式

    本文分享了在Java中使用跳板機(jī)執(zhí)行SSH命令的方法,并推薦了一些Maven依賴,希望這些信息對大家有所幫助
    2024-12-12
  • 簡述Java編程之關(guān)系操作符

    簡述Java編程之關(guān)系操作符

    這篇文章主要介紹了簡述Java編程中的關(guān)系操作符,同時(shí)對比較類作了簡單介紹,需要的朋友可以參考下
    2017-09-09
  • mybatisPlus中批量刪除的示例代碼

    mybatisPlus中批量刪除的示例代碼

    本文主要介紹了mybatisPlus中批量刪除的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Spring框架AOP面向切面編程原理全面分析

    Spring框架AOP面向切面編程原理全面分析

    這篇文章主要介紹了Spring框架AOP面向切面編程的全面分析,文中附含詳細(xì)的示例代碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09

最新評論

涟源市| 泽库县| 永定县| 和平区| 蛟河市| 临清市| 郓城县| 庆阳市| 宁远县| 五家渠市| 仙居县| 美姑县| 高尔夫| 亳州市| 尖扎县| 福贡县| 突泉县| 金溪县| 昆山市| 紫金县| 克拉玛依市| 灌南县| 江都市| 滁州市| 交城县| 行唐县| 安宁市| 松溪县| 林芝县| 通化县| 永福县| 磴口县| 三都| 呼伦贝尔市| 临潭县| 嵊泗县| 禹城市| 普格县| 望谟县| 林周县| 那曲县|