LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2983|回复: 1

请教用JSP制作页面防刷新计数器

[复制链接]
发表于 2005-7-19 10:37:46 | 显示全部楼层 |阅读模式
我现在正在做一个防止刷新的计数器,但一直没成。 :help
      首先,我想对网站主页进行访问量统计,即实现客户端第一次浏览主页时,计数器加1,但要求重复刷新页面时计数器不会加1。我的想法是使用session.isNew()方法来判断是否是第一次访问主页面,该不该计数,从而解决防刷新的问题,即当打开浏览器,服务器端会认为新建立一个session会话,这时页面上的计数器值加1,而再重复刷新此页面时,通过session.isNew()方法返回值(false)判断出已经建立过session,也就是说不是第一次浏览主页,因而计数器不会加1。
    我编完代码后,新打开一个浏览器,输入我那个主页的网址,计数器加1,然后不断刷新,计数器不加1,这样就是符合了我的预期目标。但是当已打开了一个浏览器,页面上有一个链接指向我的主页,当点击链接进入我的主页面后,页面上的计数器就不加1了,这就不对了,我想这是session的原因,因为它早就建立了,所以用session.isNew()就不起作用了。
    同样,我在做文章的占击率计数时,也出现类似问题,在先打开文章标题列表页面后,点击其中一个标题后,点击率也不能加1。
    这个问题使我郁闷了好长时间,也在网上查了一些东西,自己也试了其他方法,但就是没能很好的解决这个问题。请朋友们多帮帮忙,为我指点迷津,你们在做防止刷新计数器的思路和方法是啥样的,给我一个启发。 :thank
发表于 2005-7-27 12:00:23 | 显示全部楼层

re

[php]
<%@ page contentType="text/html;charset=gb2312" %>
<!--jsp计数器-->  
<html>
<head>
<title>jsp计数器</title>
</head>
<body>
<%@ page import="java.io.*" %>
<%
String currentRecord = null;//保存文本的变量
BufferedReader file; //BufferedReader对象,用于读取文件数据
String nameOfTextFile = "e:\\count.txt";

//读取
file = new BufferedReader(new FileReader(nameOfTextFile));
String readStr =null;
int writeStr =0; //如果计数文本中的计数值为空则让它显示时变成1并写入
try
{ readStr = file.readLine(); }
catch (IOException e)
{ System.out.println("读取数据错误."); }
if (readStr == null) readStr = "没有任何记录";

//判断cookie,第一次登陆时加1,刷新时不累计计数
else if (request.getHeader("Cookie")==null)
{ writeStr = Integer.parseInt(readStr)+1;}
else
{ writeStr = Integer.parseInt(readStr);}

//写入时控制因为刷新引起的重复计数
if (request.getHeader("Cookie")==null)
{
try {
PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile));
pw.println(writeStr);
pw.close();}
catch(IOException e) {
out.println(e.getMessage());}
}
%>
<p align="center">您是傲雪寒梅网站的第<b><font color="red"><%=writeStr%></font></b>位客人。</p>
</body>
</html>
[/php]

当然,如果你觉得用文件不好可以改成写数据库的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表