我刚开始学习JSP,现在运行书上的一个防刷新计数器,包含Anti-refreshcount.jsp和counter.java,代码我基本上能看懂,只是其中提到的文件count.txt是应该自己新建吗?如果是这样的话,那应该放在什么位置在可以呢?谢谢哦
代码如下:
1、Anti-refreshcount.jsp的代码
<%@ page contentType="text/html; charset=GB2312" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<meta name="GENERATOR" content="Oracle JDeveloper">
<title>
防刷新计数器
</title>
</head>
<body bgcolor="#ffffff">
<!--创建并调用bean(counter)-->
<jsp:useBean id="counter" class="counter" scope="request">
</jsp:useBean>
<%
//调用counter对象的ReadFile方法来读取文件count.txt中的计数
String cont=counter.ReadFile("/count.txt");
//调用counter对象的ReadFile方法来将计数器加一后写入到文件count.txt中
counter.WriteFile("/count.txt",cont);%>
防刷新计数器<br>
您是第<%=cont%>位访问者
</body>
</html>
2、counter.java的代码
import java.io.*;
public class counter extends Object{
private String currentRecord=null;//保存文本的变量
private BufferedReader file; //BufferedReader对象,用于读取文件数据
private String path;//文件完整路径名
public counter() {
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
//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());
}
}
private void jbInit() throws Exception {
}
}