3.9 アプレット:TextApplet.jsp
3.9 アプレット:TextApplet.jsp
次の例ではMathematica のパワーを使ったWebサイトをアプレットから呼び出してみます.これはクライアントとサーバプログラミングの組合せで行われます.このセクションにはJavaのプログラミングも出てきます.
前述 のようにwebMathematica をインストールするとhttp://localhost:8080/webMathematica/Examples/TextApplet.jsp でこのMSPに接続することができます(ご自分のサーバに接続するURLはこれとは多少異なる場合もあります).このページのソースはwebMathematica/Examples/TextApplet.jsp とwebMathematica/WEB-INF/src/ExampleApplets/TextApplet.java にあります.
これがJSPのソースです.
<%@ page language="java" %> <%@ taglib uri="/webMathematica-taglib" prefix="msp" %> <html> <head> <title>Live 3D Plotting</title> </head> <body text="#171717" bgcolor = "#ffffff"> <html> <title>Applet Test</title> <body bgcolor="#ffffff"> <p> Here is an applet that gets a result from Mathematica: <br> <msp:allocateKernel> <msp:evaluate> If[ MSPValueQ[ $$Compute], MSPReturn[ "Date[] returns " <> ToString[ Date[]], "text/plain"]] </msp:evaluate> <applet code="TextApplet" archive = "<msp:evaluate> $WebApplication <> "/Resources/applets/MSPExamples.jar"</msp:evaluate>" width="400" height="30" > <param name="ArgumentURL" value="TextApplet.jsp?Compute=True"> </applet> </msp:allocateKernel> <p> Hitting refresh will cause the page to update. </body> </html>
アプレットのためのソース,TextApplet.javaは次の通りです.
import java.applet.Applet; import java.awt.*; import java.net.*; import java.io.*; public class TextApplet extends Applet { public void paint(Graphics g) { super.paint(g); try { URL url=new URL(getDocumentBase(), getParameter("ArgumentURL")); InputStream in=url.openStream(); ByteArrayOutputStream out=new ByteArrayOutputStream(); byte[] b=new byte[1024]; int len; while((len=in.read(b, 0, 1024)) != -1) { out.write(b, 0, len); } b=out.toByteArray(); g.drawBytes(b, 0, b.length-1, 20, 20); } catch (Exception e) { System.out.println("Error "+e); } } }
これは非常に単純なアプレットです.paintメソッドがURLへの接続を開きます.そのURLはアプレットをロードしたドキュメントとparam タグから渡されたArgumentURLというパラメータの値によって名付けられています.これによってTextApplet JSPが呼ばれ,日付け計算が返されます.