>> i's SQUARE >> Javaのノウハウ >> JavaScriptとの連携

JavaScriptとの連携



■LiveConnectってナニ??

 LiveConnect とは、同一ページ内にある「Java」と「JavaScript」を連動させる事をさします!

 Java に限らず 「RealPlayer」や「MIDIPlugin」、「Flash」などを「JavaScript」で操作できるようにもなりますが、 ここではあくまでJavaアプレットとの連動に限定して、その方法・その為のコードの書き方を記述します!


■LiveConnectがなぜ必要なのか?

 アプレットは元々豊富なAPIを持ってますが、 アプレットの機能だけでは出来ないことを補完する為に 「LiveConnect」が必要です。

 例えば、Javaアプレットではクッキーを操作するAPIは存在しません!
 そこで、アプレットで処理したデータをJavaScriptに渡し、 JavaScriptの関数を実行してクッキーに保存したり、 JavaScriptからクッキーを読み込み、そのデータをアプレットに渡したり、 といった事が「LiveConnect」で可能になります!
 但し「LiveConnect」を実行する為にはブラウザがNN4、IE5以上の環境が必要です!


■LiveConnect用パッケージについて

LiveConnect用の「netscape.javascipt パッケージ」は Netscape に含まれています。 Netscape がインストールされているディレクトリーの Program/Java/Classes/java*.jar を以下のコマンドで解凍して下さい☆

>jar xvf java*.jar



サンプルHTMLファイル

<SCRIPT LANGUAGE="JavaScript">
<!--
depas=getCookie("data");
document.write("<APPLET CODE=\"test.class\" ARCHIVE=\"test.jar\" WIDTH=300 HEIGHT=200 MAYSCRIPT>");
document.write("<PARAM name = savedata value = \"" + depas + "\"></APPLET>");

function getCookie(key) {
  var value,l,m,h;
  value = " " + document.cookie + ";";
  l = value.indexOf(" " + key + "=");
  if (l != -1) {
    m = value.indexOf("=",l) + 1;
    h = value.indexOf(";",m);
    return unescape(value.substring(m,h));
  }
  return null;
}
function cookiequery(str) {
  if (document.cookie != ""){
    document.cookie = "data=;expireDate=Fri,31-Dec-1999 23:59:59; ";
  }
  document.cookie = "data=" + str + ";expires=Fri,31-Dec-2030 23:59:59; ";
}
// -->
</SCRIPT>
<NOSCRIPT>Sorry... this page is using JavaScript.</NOSCRIPT>


JavaScriptからデータを貰うアプレットのサンプル

String ssss = getParameter("savedata");
try {
        StringTokenizer st = new StringTokenizer(ssss,"|");
        st.nextToken();
        data1 = st.nextToken();
        data2 = Integer.valueOf( st.nextToken() ).intValue();
        data3 = Integer.valueOf( st.nextToken() ).intValue();
    } catch (NumberFormatException e) { System.out.println(e); }


アプレットからJavaScriptの関数を実行するサンプル

/* LiveConnectパッケージをインポート */
import netscape.javascript.*;

/* クッキーに保存したいデータ */
String data1="テスト";
int data2=data3=0;

/* LiveConnectのオブジェクト作成 */
JSObject jswin = JSObject.getWindow(this);

/* クッキーに保存したいデータを区切り文字「|」で連結 */
String val = "SSSS|"+ data1 +"|"+ data2 +"|"+ data3 +"|"+"|EEEE";

/* JavaScriptの関数 cookiequery にデータをセット */
String out = "cookiequery(\"" + val + "\");";

/* JavaScriptの関数 cookiequery を実行 */
jswin.eval(out);



■ポイントを解説

 サンプルは Javaの名前を「test.java」、クラス名を「test.class」、jarを「test.jar」 にしてます!
 まず、解凍したLiveConnect用パッケージを「netscape」といった名前のディレクトリにして これをtest.javaと同じディレクトリにコピーする必要があります。 もしくはクラスパスを設定します。

 HTMLファイルではアプレットタグをJavaScriptで記述し、 「getCookie」関数を実行、「data」と言った名前のクッキーの内容を変数「depas」に格納して パラメータとしてアプレットにデータを渡しています!
 LiveConnect を使用するには、アプレットタグに必ず「MAYSCRIPT」と記述する必要があります!

 アプレット側の処理はコードを見れば理解できると思います!
 このサンプルでは、クッキーに渡すときは「|」でそれぞれの変数を連結し、 クッキーからデータを貰いアプレットを実行した時は「|」で区切り変数に値を渡しています。

男は名前を付けて保存。女は上書き保存。