BaoYaEr
利用HttpSessionListener實現網站在線人數統計功能 [zt]
在網站中經常需要進行在線人數的統計。過去的一般做法是結合登錄和退出功能,即當用戶輸入用戶名密碼進行登錄的時候計數器加1,然后當用戶點擊退出按鈕退出系統的時候計數器減1。這種處理方式存在一些缺點,例如:用戶正常登錄后,可能會忘記點擊退出按鈕,而直接關閉瀏覽器,導致計數器減1的操作沒有及時執行;網站上還經常有一些內容是不需要登錄就可以訪問的,在這種情況下也無法使用上面的方法進行在線人數統計。
我們可以利用Servlet規范中定義的事件監聽器(Listener)來解決這個問題,實現更準確的在線人數統計功能。對每一個正在訪問的用戶,J2EE應用服務器會為其建立一個對應的HttpSession對象。當一個瀏覽器第一次訪問網站的時候,J2EE應用服務器會新建一個HttpSession對象,并觸發HttpSession創建事件,如果注冊了HttpSessionListener事件監聽器,則會調用HttpSessionListener事件監聽器的sessionCreated方法。相反,當這個瀏覽器訪問結束超時的時候,J2EE應用服務器會銷毀相應的HttpSession對象,觸發HttpSession銷毀事件,同時調用所注冊HttpSessionListener事件監聽器的sessionDestroyed方法。
可見,對應于一個用戶訪問的開始和結束,相應的有sessionCreated方法和sessionDestroyed方法執行。這樣,我們只需要在HttpSessionListener實現類的sessionCreated方法中讓計數器加1,在sessionDestroyed方法中讓計數器減1,就輕松實現了網站在線人數的統計功能。
下面就是利用HttpSessionListener實現在線人數統計的一個例子,這個例子已經在中創軟件的J2EE應用
服務器
InforWeb中測試通過。
首先,編寫一個簡單的計數器,代碼如下:
public
?
class
?OnlineCounter?
{?
????
private
?
static
?
long
?online?
=
?
0
;?????
????
public
?
static
?
long
?getOnline()?
{?
????????
return
?online;?
????}
?????
????
public
?
static
?
void
?raise()
{?
????????online
++
;?
????}
??
????
public
?
static
?
void
?reduce()
{?
????????online
--
;?
???}
?
}
?
然后,編寫HttpSessionListener實現類,在這個實現類的sessionCreated方法中調用OnlineCounter的raise方法,在sessionDestroyed方法中調用OnlineCounter的reduce方法,代碼如下:
?
import
?javax.servlet.http.javax
/
servlet
/
http
/
HttpSessionEvent.java.html
"
?target=
"
_blank
"
>HttpSessionEvent;?
import
?javax.servlet.http.javax
/
servlet
/
http
/
HttpSessionListener.java.html
"
?target=
"
_blank
"
>HttpSessionListener;?
public
?
class
?OnlineCounterListener?
implements
?javax
/
servlet
/
http
/
HttpSessionListener.java.html
"
?target=
"
_blank
"
>HttpSessionListener?{?
????
public
?
void
?sessionCreated(javax
/
servlet
/
http
/
HttpSessionEvent.java.html
"
?target=
"
_blank
"
>HttpSessionEvent?hse)?{?
????????OnlineCounter.raise();?
????}?
????
public
?
void
?sessionDestroyed(javax
/
servlet
/
http
/
HttpSessionEvent.java.html
"
?target=
"
_blank
"
>HttpSessionEvent?hse)?{?
????????OnlineCounter.reduce();?
????}?
}?
再然后,把這個HttpSessionListener實現類注冊到網站應用中,也就是在網站應用的web.xml中加入如下內容:
<
web
-
app
>
?
????……?
????
<
listener
>
?
????????
<
listener
-
class
>
?
????????????gongfei.cmc.articles.example.OnlineCounterListener?
????????
</
listener
-
class
>
?
????
</
listener
>
?
????……?
</
web
-
app
>
?
OK,在線人數統計功能已經實現,只要在JSP頁面中加入下面這樣的腳本就能顯示但前在線人數了:
<%@?page?language=
"
java
"
?pageEncoding=
"GB2312"
?%>
<%@?page?
import
=
"gongfei.cmc.articles.onlinecounter.OnlineCounter"
?%>
<html>
????<head><title>On?Line?Counert</title></head>
????<body?bgcolor=
"#FFFFFF"
>
????????On?line:<%=OnlineCounter.getOnline()%>
????</body>
</html>
發表于 2006-12-08 11:17
大田斗
閱讀(653)
評論(0)
編輯
收藏
所屬分類:
Strtus
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
struts中dispathAction
Java實現隨機驗證碼功能實例
struts的ActionMessage以及html:errors不用資源文件
分頁pager-taglib使用指南
ServletContextListener || HttpSessionListener 的用法
Struts標簽庫
Struts結合Velocity開發web應用
使用struts-menu制作樹型菜單實例
Struts filter使用學習筆記
struts 的log4j配置
<
2025年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
導航
BlogJava
首頁
發新隨筆
發新文章
聯系
聚合
管理
統計
隨筆: 32
文章: 427
評論: 144
引用: 0
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(5)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2008年12月 (1)
2008年4月 (2)
2008年2月 (1)
2008年1月 (1)
2007年12月 (3)
2007年11月 (1)
2007年10月 (3)
2007年7月 (2)
2007年6月 (1)
2007年4月 (2)
2007年3月 (3)
2007年2月 (5)
2007年1月 (3)
2006年12月 (4)
文章分類
axis(6)
(rss)
eclipse(7)
(rss)
Hibernate(30)
(rss)
html/js/css(107)
(rss)
java(106)
(rss)
linux(7)
(rss)
Lucene(7)
(rss)
spring(36)
(rss)
Spring CLOUd(1)
(rss)
Strtus(30)
(rss)
其它(48)
(rss)
開源opensource(48)
(rss)
數據庫DateBase(30)
(rss)
設計模式(12)
(rss)
文章檔案
2018年8月 (1)
2012年5月 (1)
2012年4月 (2)
2011年7月 (6)
2010年3月 (1)
2010年2月 (1)
2010年1月 (3)
2009年12月 (1)
2009年10月 (1)
2009年8月 (3)
2009年3月 (1)
2009年2月 (1)
2008年12月 (3)
2008年11月 (10)
2008年10月 (3)
2008年9月 (2)
2008年8月 (2)
2008年7月 (4)
2008年6月 (13)
2008年5月 (15)
2008年4月 (9)
2008年3月 (10)
2008年1月 (18)
2007年12月 (33)
2007年11月 (6)
2007年10月 (18)
2007年9月 (10)
2007年8月 (18)
2007年7月 (15)
2007年6月 (25)
2007年5月 (19)
2007年4月 (26)
2007年3月 (38)
2007年2月 (33)
2007年1月 (27)
2006年12月 (27)
2006年11月 (12)
java
Ajax特效網站
cndiy nio
GRO
Hani Suleiman's blog
Java之路
java論壇
J道
mule
mule 入門
oksonic(動畫教程)
一路由你
中國eclipse
八進制
在線源碼
多線程實戰
天火
小米的blogjava
幻境伯克----jface/swt
很全的博克-強
每日一得
滿江紅
邢紅瑞
飛翔
鳥詩選(js)
鳥食軒 (dhtml)
工具
apache中文手冊
extjs學習
iconFindre
java 安全
javaresearch
java技巧網
js之王
matrix(study)
prototype api
spring中文
北京IT企業速查
在線流程圖工具
雅虎翻譯
朋友
Happyshow
hibernate異常
skywalker
sunshow
xf
亞光
同云博客
小弟鵬
張玉磊
昕
李陽
黃鳴
搜索
積分與排名
積分 - 1104538
排名 - 28
最新評論
1.?re: hibernate.cfg.xml配置
好全啊 .. 棒棒噠 ~ !
--junqinag.yang
2.?re: Quartz任務調度快速入門
我現在來看還是覺得不錯
--小任
3.?re: js中this的總結
評論內容較長,點擊標題查看
--pam
4.?re: Quartz任務調度快速入門
樓主辛苦
--yd
5.?re: Quartz任務調度快速入門
頂了,內容寫的很好
--sen
閱讀排行榜
1.?網頁不緩存(3563)
2.?Form嵌套引起的問題 (2867)
3.?解決IE下CSS背景圖片閃爍的Bug(2458)
4.?Spring AOP的動態載入原理(2416)
5.?如何制作漂亮的Excel表格(2057)
評論排行榜
1.?北京戶口--吃官司(5)
2.?開始→運行→輸入的命令集錦(3)
3.?讓網頁上的所有圖片動起來(2)
4.?Dom4j 編碼問題徹底解決 (1)
5.?心情不爽(1)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 大田斗
主站蜘蛛池模板:
亚洲色爱图小说专区
|
日本一区免费电影
|
亚洲色自偷自拍另类小说
|
亚洲国产成人AV在线播放
|
黄瓜视频高清在线看免费下载
|
亚洲韩国在线一卡二卡
|
88xx成人永久免费观看
|
欧洲人成在线免费
|
亚洲AV福利天堂一区二区三
|
一个人免费视频在线观看www
|
久久国产成人亚洲精品影院
|
国产亚洲精品美女
|
亚洲国产成人精品久久久国产成人一区二区三区综
|
精品一区二区三区无码免费直播
|
成人无遮挡毛片免费看
|
亚洲色偷偷综合亚洲AV伊人蜜桃
|
免费无码一区二区三区蜜桃大
|
亚洲AV成人精品日韩一区
|
国产免费怕怕免费视频观看
|
色婷婷综合缴情综免费观看
|
中文字幕不卡亚洲
|
久久国产乱子伦精品免费一
|
亚洲无线一二三四区
|
特级淫片国产免费高清视频
|
免费无遮挡无码视频在线观看
|
久久久久无码专区亚洲av
|
久久国产精品2020免费m3u8
|
亚洲午夜精品国产电影在线观看
|
午夜神器成在线人成在线人免费
|
亚洲美女aⅴ久久久91
|
国产一卡2卡3卡4卡2021免费观看
|
亚洲最大的成人网站
|
亚洲AV伊人久久青青草原
|
国产精品免费大片
|
亚洲色丰满少妇高潮18p
|
国产精品亚洲w码日韩中文
|
99re6在线精品视频免费播放
|
亚洲福利秒拍一区二区
|
韩国免费三片在线视频
|
国产成年无码久久久免费
|
亚洲日本人成中文字幕
|