Documentation 3. 基本的な例題![]() |
![]() ![]() |
前述のようにwebMathematica をインストールするとhttp://localhost:8080/webMathematica/Examples/Plot.jspでこのJSPに接続することができます(ご自分のサーバに接続するURLはこれとは多少異なる場合もあります).
この例題では関数を入力し,これを積分することができます.結果はタイプセットシステムでフォーマットされ,画像として保存されます.このページのソースはwebMathematica/Examples/Integrate.jspにあります.以下はformタグを含む部分です.
<%@ page language="java" %>
<%@ taglib uri="/webMathematica-taglib" prefix="msp" %>
<html>
<head>
<title>Integration</title>
</head>
<body>
<h1>Integrate a function</h1>
<form action="Integrate.jsp" method="post">Input:
<br>
<msp:allocateKernel>
<msp:evaluate>
integrand = Null; 被積分関数を保存するページ変数
If[ MSPValueQ[ $$expr],
integrand = 安全な変換で入力を解釈
MSPToExpression[ $$expr]] ;
</msp:evaluate>
<input type="text" name="expr" size="24"
value="<msp:evaluate> MSPValue[ $$expr, "Sin[x]^2"]</msp:evaluate>" />
<br/>
<br/>
<msp:evaluate> 被積分関数を実行
If[ integrand =!= Null,
MSPFormat[
Integrate[integrand, x], StandardForm]]
</msp:evaluate>
</msp:allocateKernel>
<br/>
<input type="submit" name="btnSubmit" value="Evaluate">
</form>
</body>
</html>
この例ではmsp:evaluateタグが式を積分し,MSPFormatを使って結果をStandardFormでフォーマットします.これが画像を生成し,画像への参照を返します.これがうまくいくためには,Mathematica のフロントエンドを使わなければなりません.
この例はMSPToExpressionを使ったページ変数の使い方も示しています.これは,例えば入力がたくさんの計算に使われるとき等に,特定の構造に適したMSPBlockの使用に代る選択肢です.ページ変数のintegrandはNullに初期化され,後に,変数の値が変更されると積分が行われます.この入力変数に実際の値がある場合にのみ$$exprの解釈された値が割り当てられます.$$exprを解釈しているときにセキュリティエラーのようなエラーがあると例外が投げられ,integrandはNullのままになります.
MSPToExpressionは入力変数にセキュリティチェックを適用します.サイトの危険の原因となるのは入力変数が多いので,安全な変換関数のMSPBlockとMSPToExpressionを常に使うようにすべきでしょう.特に,入力変数には決してToExpressionを使うべきではありません.セキュリティのシステムに関しては「セキュリティ」のセクションで詳しく説明します.
MathMLを用いて結果を返すこともできます.これについてはMathMLのセクションで詳述します.数式やグラフィックスのフォーマットについての詳細は「数式やグラフィックスの表示」をご覧ください.
最初のmsp:evaluateタグで興味深い点は,このタグに2つのMathematica コマンドが含まれていることです.セミコロン(;)で区切ると,2つのコマンドをひとつのタグで使うことができます.これに加え,最後のコマンドにもセミコロンが付いています.こうすることでタグからの出力が出力ページに挿入されないようにしているのです. webMathematica のページにへのコードの挿入方法については「ページのコード」で詳しく説明します.
![]() ![]() |