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 ファイルにはゼロしかありません。Web サイトを開くと、次のように表示されます。

java.io.FileNotFoundException: pathtotxt/count.txt (許可が拒否されました)

しかし、私はすでにこのファイルの許可を変更しました。ターミナルでは -rwxrwxrwx+ と表示されているので、このファイルを読み書きできるはずです。これを解決するにはどうすればよいですか?

4

1 に答える 1

1

サーバー側でこの機能を実装する方が良いと思います。例えば:

  • コンストラクターでファイルから値を読み取って保存するクラスを作成します
  • このクラスには、以前に保存された値を返す public メソッド (int getCounter()) があります。
  • このクラスには、値を増やしてファイルに書き込む public メソッドがあり、常に同期されます。

次に、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 に答える