|
3.3 MSP関数:Expand.jsp
3.3 MSP関数:Expand.jsp 前述のようにwebMathematica をインストールするとhttp://localhost:8080/webMathematica/Examples/Expand.jspでこのJSPに接続することができます(ご自分のサーバに接続するURLはこれとは多少異なる場合もあります). submitボタンを押すと,多項式がベキ乗され,展開されます.そして,結果が書かれたHTMLページが返されます.このページのソースはwebMathematica/Examples/Expand.jspにあります.以下はformタグを示した部分です.
<%@ page language="java" %> <%@ taglib uri="/webMathematica-taglib" prefix="msp" %>
<html> <head> <title>Expanding Polynomials</title> </head> <body> <h1>Expanding Polynomials</h1> <form action="Expand.jsp" method="post"> Enter a polynomial (e.g. x+y): <input type="text" name="expr" size="10"> Enter a positive integer (e.g. 4): <input type="text" name="num" size="3"> <br> <msp:allocateKernel> <msp:evaluate> MSPBlock[{$$expr, $$num}, Expand[$$expr^$$num]] 入力変数で計算を確保する </msp:evaluate> </msp:allocateKernel> <input type="submit" name="submitButton" value="Evaluate"> </form> </body> </html>
これにも前の例で説明したformとinputのタグが付いています.また,msp:evaluateタグはMSP関数のMSPBlockを参照しています. formが送られるとサーバはMathematica カーネルに接続します.セッションでは2つのシンボル$$exprと$$numが2つのinput要素からのテキストに割り当てられます.テキストがなければシンボルは定義されません. 次にMathematica がmsp:evaluateタグの内容を評価します.MSPBlockコマンドはプログラミングコンストラクトで,ここでは$$exprと$$numの2つの入力変数を検査します.もしどちらかに値がなければMSPBlockはヌル文字列を返します.ですから,はじめてこのページにアクセスしたときには結果が見えないのです.次にMathematica が両変数の値を解釈します.成功すると解釈の結果が第2引数あるいはMSPBlockのボディに代入されます.この例では$$exprの値がすべて$$exprの値を解析したもので置き換えられています.$$numも同様に処理されます.次に,その結果が評価され,フォーマットされてHTMLページに置かれます.そしてそのHTMLページがクライアントに返されるのです. Mathematica による変数の解釈がうまくいかない場合が2つ考えられます.ひとつは入力がf[}のようにMathematica の有効な入力ではない場合,もうひとつはReadList["/etc/passwd"]のように危険な入力である場合です.どちらの場合も入力は拒否され,エラーメッセージが出されます.これは,システムのセキュリティ機能を示しています.これについては「セキュリティ」のセクションで説明します.変数の使い方については「より高度なトピック」の「変数」で詳しく説明します. msp:evaluateタグの結果のフォーマットについては「より高度なトピック」の「評価のフォーマット」で詳しく説明します.
     
|