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
大田斗
閱讀(648)
評論(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年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
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
1
2
3
4
5
導航
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
亞光
同云博客
小弟鵬
張玉磊
昕
李陽
黃鳴
搜索
積分與排名
積分 - 1103324
排名 - 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.?網頁不緩存(3560)
2.?Form嵌套引起的問題 (2862)
3.?解決IE下CSS背景圖片閃爍的Bug(2455)
4.?Spring AOP的動態載入原理(2411)
5.?如何制作漂亮的Excel表格(2053)
評論排行榜
1.?北京戶口--吃官司(5)
2.?開始→運行→輸入的命令集錦(3)
3.?讓網頁上的所有圖片動起來(2)
4.?Dom4j 編碼問題徹底解決 (1)
5.?心情不爽(1)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 大田斗
主站蜘蛛池模板:
科尔
|
东阳市
|
石台县
|
柳州市
|
南江县
|
扬中市
|
永州市
|
稻城县
|
尚义县
|
临沭县
|
南川市
|
蓝山县
|
太白县
|
江北区
|
福清市
|
乌兰察布市
|
泰宁县
|
长春市
|
东乡族自治县
|
宣化县
|
四川省
|
扬州市
|
阿瓦提县
|
诸暨市
|
加查县
|
滨州市
|
南京市
|
水富县
|
黔西县
|
洛阳市
|
个旧市
|
徐水县
|
五华县
|
西乡县
|
长丰县
|
柘城县
|
和田县
|
博客
|
东光县
|
育儿
|
大埔区
|