站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题做JSP统计器时怎样判断点击数是用户访问所带来的增加还是网页刷新所带来的增加

做JSP统计器时怎样判断点击数是用户访问所带来的增加还是网页刷新所带来的增加

摘要: 做JSP统计器时怎样判断点击数是用户访问所带来的增加还是网页刷新所带来的增加


各位高手:小弟初学JSP.在做统计器时遇到问题请教.
做JSP统计器时怎样判断点击数是用户访问所带来的增加还是网页刷新所带来的增加?
该问题50分.如果答得好的可加分..言出必行..谢谢大家!





加急


用SESSION来判断阿


用ip来判断是不是好些?!


TO neptune0229(暗长空):

如果局域网公网IP只用一个呀..现在国内大多数用的还是局域网上网呀.
所以用IP不是太好!

TO liujun999999(减肥中...):用session具体应该怎样实现..?


TO neptune0229(暗长空):
你是说SessionID的方法吧?
我试试..



用session的方法

如果session是新的,就增加计数

如果是老的,计数不变!


session是能实现,但是一直保留着session记录,对服务器压力很大


我看:还是取SessionID了.当用客户端打开浏览器时,就产生一个新的SessionID,这样只要先在数据库里面建一个表用来保存相应的SessionID和其它如IP,相应页面URL的资料,如果表里面没有旧记录就增加一次点击数..就可确保就算是用户刷新没有关系,只有我在程序里面先扫描下表里有没有先前记录过这个SessionID,有的话就不增加,没有时就增加.不知道各位认为这个办法如何..谢谢!


相信现网站统计器很多初学者都有点迷茫,请大家继续发言呀.想出解决的办法越多越好..


但是用SessionID的话,随着浏览量的增加,每次都要扫描会加重服务器的负担...


请参考HttpSessionListener


TO:nighthawk(我们孤单,我们并肩)
好的.我看看.谢谢!



session.isNew()


TO:nighthawk(我们孤单,我们并肩)
这种方法不错!我在网上找到相关的资料.大家可以参考!
利用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中测试通过。
  首先,编写一个简单的计数器,代码如下:

package gongfei.cmc.articles.onlinecounter;
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方法,代码如下:

package gongfei.cmc.articles.onlinecounter;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class OnlineCounterListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent hse) {
OnlineCounter.raise();
}
public void sessionDestroyed(HttpSessionEvent hse) {
OnlineCounter.reduce();
}
}

  再然后,把这个HttpSessionListener实现类注册到网站应用中,也就是在网站应用的web.xml中加入如下内容:


……


gongfei.cmc.articles.example.OnlineCounterListener


……




谢谢各位,问题解决了.大家可以继续发言!


↑返回目录
前一篇: JSP新手,什么是jsp啊?这里怎么玩儿?
后一篇: JSP下调水晶报表问题!超难!解决问题500分相送!