WEBクライアントでJavaを動かす:DOMアクセスする
WEB、クライアント側でJavaを使う。
HTMLによるWEBページにJavaによる処理を反映させる単純な具体例/コードです。
グラフィック部品としてのアプレットは完全に廃れましたが、 複雑な論理を持つものはjavascriptでの構築が難しいことも あり、Javaで作り上げたものにアプレットをかぶせ、このような 形でクライアント側で動かすことは大きな発展性が見込めます。
本記事は実際に動く短いコードを示していますが、細かな説明は
まだ載せていません。
補足に参考となるサイトなどを
載せました。
JavascriptからJavaを単純に呼び出す。
JAppletの派生として作成したアプレットを<applet>でHTMLに 導入すればJavascriptから"アプレット名.関数名()"でJava による関数にアクセスできます。
単に小文字を大文字に変換するだけの関数を持つアプレットを Javascriptで呼び出しHTMLの画面に反映させてみます。
JavaプログラムAppletAcsTest.java
import javax.swing.JApplet; public class AppletAcsTest extends JApplet { public String doIt(String str){ return str.toUpperCase(); } }
Javaコンパイル、Jar作成バッチ
javac AppletAcsTest.java
jar -cf AppletAcsTest.jar AppletAcsTest.class
HTML記述
<html><head></head><body> <applet id="app" archive="AppletAcsTest.jar" code="AppletAcsTest" width="1" height="1" display="none"></applet> <script type="text/javascript"> function test(id){ var elm = document.getElementById(id); elm.value= app.doIt(elm.value); // アプレット関数呼び出し } </script> <input type=text id=t1 value="acsTest"> <input type=button value="doIt" onClick='test("t1")'> <input type=button value="reset" onClick='document.getElementById("t1").value="acsTest"'> </body></html>
実際にこの記事に上記HTML記述のbody部のみ組み込んでみました。doItボタンを押すとtest() 関数からjavaで組まれたdoIt()関数を呼び出し、その結果をテキストインプットにセットして います。
ソースセット:AppletAcsTest.zip
Java,HTML,ビルド済みjar,ビルド用バッチが入っています。
ココログ記事の中に置いたapp.doIt()呼び出しはfirefoxでは動かないことが分かりました。 getElementById('app').doIt()とするとfirefoxでも動きます。IE,Chrome,Opera,Safariでは app.doIt()で問題なく動きます。firefoxでもソースセットに入れてある単体HTMLではapp.dpIt()でも 動きます。次の項のapp2.doIt()は動きます。 firefoxの不安定さにはいつも泣かされます。IEもうまく動かないことは多いのですが IEは動かないときは'必ず'動かないので楽です。
Javaで作成された構文解析ツールをWEBクライアント上で呼び出すサンプルを WEB上で動くMathML生成ツール に置きました。
JavaでHTMLのDOMにアクセスする。
Java-Pluginを使用してHTMLのDOMにJavaアプレットからアクセスする単純例/コードです。
名前指定されたinput要素にJavaからアクセスし、valueを置き換える単純なプログラムです。
JavaプログラムAppletDomTest.java
import javax.swing.JApplet; import org.w3c.dom.html.*; import com.sun.java.browser.plugin2.DOM; public class AppletDomTest extends JApplet { HTMLDocument doc; public void init() { try { doc = (HTMLDocument)DOM.getDocument(this);// HTML-document取得 } catch (Exception ex) {} } public void doIt(String id){ HTMLInputElement elm= (HTMLInputElement)(doc.getElementById(id)); elm.setValue(elm.getValue().toUpperCase()); } }
Javaコンパイル、Jar作成バッチ;plugin.jarを指定する必要があります。
javac -classpath "%JAVA_HOME%\jre\lib\plugin.jar" AppletDomTest.java
jar -cf AppletDomTest.jar AppletDomTest.class
HTML記述
<applet id="app2" archive="AppletDomTest.jar" code="AppletDomTest"
width="1" height="1"></applet>
<input type=text id=t2 value="domTest">
<input type=button value="doIt" onClick='app2.doIt("t2")'>
<input type=button value="reset"
onClick='document.getElementById("t2").value="domTest"'>
実際にこの記事に上記HTML記述のbody部のみ組み込んでみました。doItボタンを押すとアプレット のdoIt()が呼ばれその中でテキストの置き換えを行っています。
ソースセット:AppletDomTest.zip
Java,HTML,ビルド済みjar,ビルド用バッチが入っています。
FireFox3.6.8でも動きます。
補足
Javaの共通DOM-APIのjavadocは 共通DOM-APIにあります。
JAVA Plug-inの資料が 新しい Java™ Plug-In テクノロジでの LiveConnect サポートにあります。
Javaコントロールパネルの設定(Windowsの場合):
[スタート]-[設定]-[コントロールパネル]でコントロールパネルを出すと、中にコーヒーカップ
マークの"Java"コントロールパネルがあります。これを起動します。
詳細/Java-Pluginで「次世代のJava Plug-inを有効にする」をチェックする必要があるかも
しれません。
Java-コンソール:
Java-コントロールパネルの「詳細」の中のJavaコンソールを有効にしておくと、System.errや
System.out(要flush)出力を見ることができます。
| 固定リンク

