Summary
Java Appletでは,サーバのファイルシステムにアクセスすることができないため,以下の方法でJavaAppletアクセスカウンタを実現する.
方法 1. サーバ・クライアント通信による方法
Java Appletでプロセス間通信を行う場合,そのAppletが置かれているサーバとだけ通信することができる.<applet code="Counter.class" width="132" height="24">
<param name="ndigits" value="6">
</applet>
ndigits にはカウンタの桁数を指定する.
注意
カウンタサーバを立ち上げる必要があるため,shellを開放していないサイトでは実現できない.方法 2. SSI と併用する方法
SSI (Server Side Include) は NCSA 系の HTTPD で採用されている機能である.<applet code="SSICounter.class" width="132" height="24">
<param name="count" value="<!-- #exec cmd="counter.pl" -->">
<param name="ndigits" value="6">
</applet>
count には表示すべきカウント値を指定する.
counter.pl はアクセス数を 1
インクリメントして標準出力に表示するプログラム
注意
CERN系のhttpdを採用しているサイトではこの方法は実現できない.方法 3. CGI と併用する方法
ほぼすべてのサイトで実現できる方法以下のタグを <img> タグに埋め込んで空のイメージを返す.
<img src="/cgi-bin/cserver.pl?incr&link=index.html" />
incr によってCGIがアクセス数をカウントアップすることを指示.
link はカウントアップするページのURIを指定
JavaApplet では
URI url = new URI(protocol, host, "/cgi-bin/cserver.pl?link=" + file);
によって,CGI にアクセス.
ここでは incr を指定しないことで,CGIにアクセス数をカウントアップすること無しにその値を返すことを指示
アクセス数が増えるたびに表示をアップデートするリアルタイムカウンタを実現することが可能
追記
別にアクセスカウンタが必要なわけじゃなくて,Applet との通信方法が知りたかっただけ.Reference
まるはち薬局のWWW技術情報 - JavaAppletによるアクセスカウンタ
http://www.orange.ne.jp/~yabu/java/counter/java.html