﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-桑桑小窝-随笔分类-网页设计</title><link>http://www.blogjava.net/virtual-function/category/38847.html</link><description>光荣在于平淡，艰巨在于漫长</description><language>zh-cn</language><lastBuildDate>Wed, 20 May 2009 19:37:30 GMT</lastBuildDate><pubDate>Wed, 20 May 2009 19:37:30 GMT</pubDate><ttl>60</ttl><item><title>网站在线人数统计</title><link>http://www.blogjava.net/virtual-function/archive/2009/04/07/264202.html</link><dc:creator>桑之兮(CS-LIN)</dc:creator><author>桑之兮(CS-LIN)</author><pubDate>Tue, 07 Apr 2009 02:02:00 GMT</pubDate><guid>http://www.blogjava.net/virtual-function/archive/2009/04/07/264202.html</guid><wfw:comment>http://www.blogjava.net/virtual-function/comments/264202.html</wfw:comment><comments>http://www.blogjava.net/virtual-function/archive/2009/04/07/264202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/virtual-function/comments/commentRss/264202.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/virtual-function/services/trackbacks/264202.html</trackback:ping><description><![CDATA[<span style="font-size: 24pt; font-family: 楷体_GB2312"><span style="font-size: 8pt"><span style="font-family: 楷体_GB2312">(转）<br style="font-family: " />
</span></span><span style="font-size: 14pt; font-family: ">&nbsp;&nbsp;<span style="font-size: 18pt"><strong><span style="font-family: ">&nbsp;&nbsp;<span style="font-family: 宋体"><span style="font-family: ">在网站中经常需要进行在线人数的统计。过去的一般做法是结合登录和退出功能，即当用户输入用户名密码进行登录的时候计数器加1，然后当用户点击退出按钮退出系统的时候计数器减1。这种处理方式存在一些缺点，例如：用户正常登录后，可能会忘记点击退出按钮，而直接关闭浏览器，导致计数器减1的操作没有及时执行；网站上还经常有一些内容是不需要登录就可以访问的，在这种情况下也无法使用上面的方法进行在线人数统计。<br style="font-family: " />
　　我们可以利用Servlet规范中定义的事件监听器（Listener）来解决这个问题，实现更准确的在线人数统计功能。对每一个正在访问的用户，J2EE应用服务器会为其建立一个对应的HttpSession对象。当一个浏览器第一次访问网站的时候，J2EE应用服务器会新建一个HttpSession对象，并触发HttpSession创建事件，如果注册了HttpSessionListener事件监听器，则会调用HttpSessionListener事件监听器的sessionCreated方法。相反，当这个浏览器访问结束超时的时候，J2EE应用服务器会销毁相应的HttpSession对象，触发HttpSession销毁事件，同时调用所注册HttpSessionListener事件监听器的sessionDestroyed方法。<br style="font-family: " />
　　可见，对应于一个用户访问的开始和结束，相应的有sessionCreated方法和sessionDestroyed方法执行。这样，我们只需要在HttpSessionListener实现类的sessionCreated方法中让计数器加1，在sessionDestroyed方法中让计数器减1，就轻松实现了网站在线人数的统计功能。</span><br style="font-family: " />
</span></span></strong></span></span></span>
<img src ="http://www.blogjava.net/virtual-function/aggbug/264202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/virtual-function/" target="_blank">桑之兮(CS-LIN)</a> 2009-04-07 10:02 <a href="http://www.blogjava.net/virtual-function/archive/2009/04/07/264202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>