|
3.5 タイプセットの画像:Integrate.jsp
3.5 タイプセットの画像:Integrate.jsp 前述のように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 のページにへのコードの挿入方法については「ページのコード」で詳しく説明します.
|