CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

关于计数器IP问题(在线等待)

楼主blueice2002(蓝冰)2002-07-19 21:51:51 在 Java / Web 开发 提问

请问计数器中怎样防止刷新来更新计数值?现在的代码如下:  
   
  <%@   page   contentType="text/html;charset=gb2312"%>  
  <HTML>  
  <HEAD>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <TITLE>  
  计数器  
  </TITLE>  
  </HEAD>  
  <BODY>  
  <!--创建并调用bean(counter)-->  
  <jsp:useBean   id="counter"   class="counter"   scope="request">  
  </jsp:useBean>  
  <%  
  String   oldip,nowip,txtPath;  
  nowip=Request.ServerVariables("REMOTE_ADDR");  
  oldip=request.cookies("IPAddress");  
  if     (nowip<>oldip)   then    
  {  
  //获取绝对路径  
  txtPath=request.getRealPath("counter.txt");  
  //调用counter对象的ReadFile方法来读取文件counter.txt中的计数  
  String   count=counter.ReadFile(txtPath);  
  //实现同步  
  synchronized(txtPath)  
  {  
  //调用counter对象的ReadFile方法来将计数器加一后写入到文件counter.txt中  
  counter.WriteFile(txtPath,count);  
  }  
  }  
  %>  
  您是第<font   color="red"><b><%=count%></b></font>位访问者  
  </BODY>  
  </HTML> 问题点数:20、回复次数:16Top

1 楼zhaoweiemail(剑心)回复于 2002-07-19 21:57:50 得分 15

第一次给计数器加一,然后把用户的IP存到session中,当用户刷新时,你判断session中是否已经有用户的IP,有就不用对计数器加一了,没有就加一。Top

2 楼blueice2002(蓝冰)回复于 2002-07-19 22:03:24 得分 0

问题是怎样利用session啊?请帮忙!!Top

3 楼zhaoweiemail(剑心)回复于 2002-07-19 22:09:36 得分 0

String   userIp=(String)session.getValue("userIp");  
  if(userIp==null){  
          给计数器加一;  
          String   userIp=request.getRemoteAddr();  
    session.putValue("userIp",userIp);  
  }  
  这样就可以了。Top

4 楼blueice2002(蓝冰)回复于 2002-07-19 22:17:13 得分 0

就是这一段代码啊,我应该加在什么地方?  
  <%@   page   contentType="text/html;charset=gb2312"%>  
  <HTML>  
  <HEAD>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <TITLE>  
  计数器程序  
  </TITLE>  
  </HEAD>  
  <BODY>  
  <!--创建并调用bean(counter)-->  
  <jsp:useBean   id="counter"   class="counter"   scope="request">  
  </jsp:useBean>  
  <%  
  String   txtPath;  
  //获取绝对路径  
  txtPath=request.getRealPath("counter.txt");  
  //调用counter对象的ReadFile方法来读取文件counter.txt中的计数  
  String   count=counter.ReadFile(txtPath);  
  //实现同步  
  synchronized(txtPath)  
  {  
  //调用counter对象的ReadFile方法来将计数器加一后写入到文件counter.txt中  
  counter.WriteFile(txtPath,count);  
  }  
  %>  
  您是第<font   color="red"><b><%=count%></b></font>位访问者  
  </BODY>  
  </HTML>Top

5 楼zhaoweiemail(剑心)回复于 2002-07-19 22:20:52 得分 0

你按下面的写就行了。  
  <%@   page   contentType="text/html;charset=gb2312"%>  
  <HTML>  
  <HEAD>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <TITLE>  
  计数器程序  
  </TITLE>  
  </HEAD>  
  <BODY>  
  <!--创建并调用bean(counter)-->  
  <jsp:useBean   id="counter"   class="counter"   scope="request">  
  </jsp:useBean>  
  <%  
  String   userIp=(String)session.getValue("userIp");  
  if(userIp==null){  
          String   txtPath;  
          //获取绝对路径  
          txtPath=request.getRealPath("counter.txt");  
          //调用counter对象的ReadFile方法来读取文件counter.txt中的计数  
          String   count=counter.ReadFile(txtPath);  
          //实现同步  
          synchronized(txtPath)  
          {  
  //调用counter对象的ReadFile方法来将计数器加一后写入到文件counter.txt中  
  counter.WriteFile(txtPath,count);  
          }  
          String   userIp=request.getRemoteAddr();  
    session.putValue("userIp",userIp);  
  }  
  %>  
  您是第<font   color="red"><b><%=count%></b></font>位访问者  
  </BODY>  
  </HTML>  
  Top

6 楼blueice2002(蓝冰)回复于 2002-07-19 22:24:58 得分 0

怎么不行啊,错误如下:  
  500   Servlet   Exception  
  /CODE/CHAPTER7/COUNTER.JSP:28:   输入字符无效。  
    session.putValue("userIp",userIp);  
  ^  
  /CODE/CHAPTER7/COUNTER.JSP:28:   输入字符无效。  
    session.putValue("userIp",userIp);  
    ^  
  2   个错误  
   
   
   
  --------------------------------------------------------------------------------  
  Resin   2.1.0   (built   Tue   Mar   26   14:12:50   PST   2002)Top

7 楼zhaoweiemail(剑心)回复于 2002-07-19 22:30:04 得分 0

我写的语句是oracle   ias的你把session.putValue("userIp",userIp);改成  
  session.setAttribute("userIp",userIp)试一试Top

8 楼blueice2002(蓝冰)回复于 2002-07-19 22:31:35 得分 0

不行:  
  500   Servlet   Exception  
  /CODE/CHAPTER7/COUNTER.JSP:28:   输入字符无效。  
    session.setAttribute("userIp",userIp)  
  ^  
  /CODE/CHAPTER7/COUNTER.JSP:28:   输入字符无效。  
    session.setAttribute("userIp",userIp)  
    ^  
  /CODE/CHAPTER7/COUNTER.JSP:28:   需要   ';'。  
    session.setAttribute("userIp",userIp)  
                                                                                ^  
  3   个错误  
   
   
   
  --------------------------------------------------------------------------------  
  Resin   2.1.0   (built   Tue   Mar   26   14:12:50   PST   2002)Top

9 楼zhaoweiemail(剑心)回复于 2002-07-19 22:35:48 得分 0

你使用的服务器是Resin   2.1.0,这个服务器我没有使用过,你查一查Resin   2.1.0的session的操作,把字符串存进session中。Top

10 楼blueice2002(蓝冰)回复于 2002-07-19 22:38:17 得分 0

好吧,谢谢你啊!!  
  到时问题解决了一定给分!Top

11 楼zhaoweiemail(剑心)回复于 2002-07-19 22:39:09 得分 0

不客气。Top

12 楼maxpain(我是新新新新新来的呀)回复于 2002-07-19 23:18:55 得分 5

session.setAttribute("userip",request.getRemoteAddr);  
  这样应该是可以的。  
  但是这样作不是个好办法,你可以使用application对象阿。这样可以得到记数,还可以得到在在线人数。Top

13 楼blueice2002(蓝冰)回复于 2002-07-20 09:54:59 得分 0

问题是怎样利用application对象啊?请帮忙!!  
  Top

14 楼blueice2002(蓝冰)回复于 2002-07-20 10:07:45 得分 0

问题已经解决了,正确答案如下:  
  <%@   page   contentType="text/html;charset=gb2312"%>  
  <HTML>  
  <HEAD>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <TITLE>  
  计数器程序  
  </TITLE>  
  </HEAD>  
  <BODY>  
  <!--创建并调用bean(counter)-->  
  <jsp:useBean   id="counter"   class="counter"   scope="request">  
  </jsp:useBean>  
  <%  
  String   userIp=(String)session.getValue("userip");  
  if(userIp==null){  
          String   txtPath;  
          //获取绝对路径  
          txtPath=request.getRealPath("counter.txt");  
          //调用counter对象的ReadFile方法来读取文件counter.txt中的计数  
          String   count=counter.ReadFile(txtPath);  
          //实现同步  
          synchronized(txtPath)  
          {  
  //调用counter对象的ReadFile方法来将计数器加一后写入到文件counter.txt中  
  counter.WriteFile(txtPath,count);  
          }  
        }  
                    session.setAttribute("userip",request.getRemoteAddr());  
           
  %>  
  您是第<font   color="red"><b><%@   include   file="COUNTER.TXT"   %></b></font>位访问者  
  </BODY>  
  </HTML>  
  Top

相关问题

  • 很急,急,急!!!关于计数器点击计算的问题-在线等待
  • 在线等待马上给分: FTP 服务性能计数器无法启动
  • 谁能给我提供免费防刷新的计数器代码……在线等待
  • 在线等待帮助,错误信息:进程性能计数器已禁用 求救!!!!!!!!!!!!!!!!!!!!
  • 在线的朋友来拿分了,帮我测试计数器
  • 求2个问题,在线邮件发送和计数器
  • 帮忙做一个基本的计数器的线程题目
  • 一个简单计数器的问题.在线等........................................
  • javabean计数器
  • 计数器

关键词

得分解答快速导航

  • 帖主:blueice2002
  • zhaoweiemail
  • maxpain

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo