0

我想为一个网站写一个访客计数器并得到这个代码

<html>
<head>
<title>Counter</title>
</head>
<body>
<%@ page import="java.io.*" %>
<%
String datei="pathtotxt/count.txt";
String wert ="";
try{
FileReader eingabestrom= new FileReader(new File(datei));
BufferedReader input=new BufferedReader(eingabestrom);
wert=input.readLine();
input.close();

int count=Integer.parseInt(wert);
count++;
FileWriter ausgabestrom=new FileWriter(new File(datei));
BufferedWriter output=new BufferedWriter(ausgabestrom);
output.write(String.valueOf(count));
output.close();
out.println("<h2>Sie sind der ");
out.println(count);
out.println(". Besucher auf unserer Site!</h2>");
}
catch(IOException e) {
out.println("Fehler: "+e);
}
%>

</body></html>

在 txt 文件中只有一个零。当我打开网站时,会出现:

java.io.FileNotFoundException: pathtotxt/count.txt (权限被拒绝)

但是我已经改变了这个文件的权限。在终端它说 -rwxrwxrwx+ 所以应该可以读/写这个文件。我该如何解决这个问题?

4

1 回答 1

1

我认为最好在服务器端实现此功能。例如:

  • 创建一个在其构造函数中从文件中读取值并保存的类
  • 此类将有一个公共方法返回先前保存的值 (int getCounter())。
  • 这个类将有一个公共方法来增加值并将其写入文件,始终同步。

然后,JSP 代码将如下所示:

<html>
<head>
<title>Counter</title>
</head>
<body>
<%@ page import="package.of.class.ClassName" %>
<%
ClassName cl = new ClassName();
out.println("<h2>Sie sind der ");
  out.println( cl.getCount());
out.println(". Besucher auf unserer Site!</h2>");
cl.increase();
%>

这样,您将提高渲染 JSP 的效率,并且您不会遇到读取文件的权限问题

于 2012-11-13T14:12:40.687 回答