请教一个关于计数器的问题(比较大众化),请赐教!(50分)

  • 主题发起人 richboy2002
  • 开始时间
R

richboy2002

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了段asp的代码,目的是实现记数器的功能。但很不幸,当服务器重新启动后,该计数器
又重新记数了,请问有什么补救的方法?请赐教,该段asp代码如下:
<%
application.lock
application("counter")=application("counter")+1
application.unlock
function G(counter)
dim s,i,myimage
s=cstr(counter)
for i=1 to len(s)
myimage=myimage&amp;"<img src="&amp;mid(s,i,1)&amp;".gif>"
next
G=myimage
end function
%>
然后调用<MARQUEE width=413 style="color: #000000">欢迎来到澄西船舶修造厂工会网站,您是第<%=G(application("counter"))%>位贵宾!</MARQUEE>
 
你要把记录写入文件中,这样就不会丢失了
 
我也知道是这样实现呀,但我不知道该怎么写呀,我上面的代码写好了,该如何写继续写?
请各位赐教!
 
没有写过关于ASP的东东,现在就放出关于这方面的JSP代码,大致上原理是一样的
计数器就是根据文件里的计数,实行+1,当然了,所谓的计数不仅仅是来一个人就
+1,而是在用户登陆后进行判断+1,原理上说就是文件的读写操作。
给出一个JAVA BEAN的调用作为参考,附有BEAN 的源程序,以资参考
<html>
...//省略html代码
<JSP:useBean id="counter" class="counter" scope="request">
</JSP:useBean>
<%
String txtPath;
txtPath=request.getRealPath("counter.txt");//获取绝对路径
String count=counter.ReadFile(txtPath);//调用counter对象的ReadFile方法来读取文件counter.txt中的计数
//实现同步
synchronized(txtPath)
{
//调用counter对象的ReadFile方法来将计数器+1后写入到文件counter.txt中
counter.WriteFile(txtPath,count);
}
%>
您是第<font color="red"><b><%=count%></b></font>
...
用到的JAVA BEAN :counter.java 代码:
import java.io.*;
public class counter
{ //保存文本的变量
private String currentRecord = null;
//BufferedReader对象,用于读取文件数据
private BufferedReader file;
//文件完整路径名
private String path;
public counter() {
}
//ReadFile方法用来读取文件filePath中的数据,并返回这个数据
public String ReadFile(String filePath) throws FileNotFoundException
{
path = filePath;
//创建新的BufferedReader对象
file = new BufferedReader(new FileReader(path));
String returnStr =null;
try
{ //读取一行数据并保存到currentRecord变量中
currentRecord = file.readLine();
}
catch (IOException e)
{ //错误处理
System.out.println("读取数据错误.");
}
if (currentRecord == null)
{ //如果文件为空
returnStr = "没有任何记录";
}
else
{ //文件不为空
returnStr =currentRecord;
}
//返回读取文件的数据
return returnStr;
}
//ReadFile方法用来将数据counter+1后写入到文本文件filePath中
//以实现计数增长的功能
public void WriteFile(String filePath,String counter) throws FileNotFoundException
{
path = filePath;
//将counter转换为int类型并加一
int Writestr = Integer.parseInt(counter)+1;
try
{ //创建PrintWriter对象,用于写入数据到文件中
PrintWriter pw = new PrintWriter(new FileOutputStream(filePath));
//用文本格式打印整数Writestr
pw.println(Writestr);
//清除PrintWriter对象
pw.close();
}
catch(IOException e)
{ //错误处理
System.out.println(e.getMessage());
}
}
}
 
多人接受答案了。
 
顶部