Documentation 8. 以前の webMathematica 技術![]() |
![]() ![]() |
このセクションではMSPスクリプトとMSP Taglibを使っているJSPの変換について説明します.MSPで使えるMathematica のコマンドのほとんどがJSPでも使えます.ですから,MSPをJSPに変換することは可能です.JSPで使うことのできないMathematica のコマンドはMSPIncludeだけです.この機能を使わなければならないのなら,代りにjsp:includeを使うようにしなければなりません.しかし,JSPのメカニズムはMSPのそれよりもはるかに豊かなので,JSPの中にはMSPに変換するのが困難なものもあります.
これは例題Plot.mspを使って説明します.このテキストは以下をご覧ください.
<html>
<head>
<title>Plot</title>
</head>
<body>
<h1>Plot</h1>
<form action="Plot" method="post">
Enter a function:
<input type="text" name="fun" size="24"
value="<%Mathlet MSPValue[ $$fun, "Sin[x]^2"] %>">
Enter a number:
<input type="text" name="x1" size="24"
value="<%Mathlet MSPValue[ $$x1, "10"] %>">
<br/>
<%Mathlet
MSPBlock[{$$fun, $$x1},
MSPShow[Plot[$$fun, {x, 0, $$x1}]]] %>
<hr/>
<input type="submit" name="btnSubmit" value="Evaluate">
</form>
</body>
</html>
これに対応するJSPのPlot.jspは次の通りです.
<%@ page language="java" %>
<%@ taglib uri="/webMathematica-taglib" prefix="msp" %>
<html>
<head>
<title>Plot</title>
</head>
<body bgcolor="#ffffff" >
<form action="Plot.jsp" method="post">
<msp:allocateKernel>
Enter a function:
<input type="text" name="fun" size="24" value =
"<msp:evaluate>MSPValue[ $$fun, "Sin[x]^2"]</msp:evaluate>"
/>
Enter a number:
<input type="text" name="x1" size="24" value =
"<msp:evaluate>MSPValue[ $$x1, "10"]</msp:evaluate>"
/>
<br>
<msp:evaluate>
MSPBlock[ {$$fun, $$x1},
MSPShow[ Plot[$$fun, {x, 0, $$x1}]]]
</msp:evaluate>
<hr>
</msp:allocateKernel>
<input type="submit" name="btnSubmit" value="Evaluate">
</form>
</body>
</html>
違いは極めて明らかです.以下にまとめます.
スクリプトがJSPとなるように名前を変える.
スクリプトは(WEB-INFディレクトリの中ではなく)webMathematica Webアプリケーションに置かなければならない.
スクリプトの冒頭に次の行を加えなければならない.
<%@ page language="java" %>
<%@ taglib uri="/webMathematica-taglib" prefix="msp" %>
評価はすべて<allocateKernel>でラップしなければならない
<%Mathlet expr %>は<msp:evaluate>expr</msp:evaluate>で置き換えなければならない.
MSPIncludeの代りにjsp:includeを使うようにする以外に,Mathematica の計算を変更する必要はない.
Mathematica のパッケージがMSPDirectoryの内部からロードされている場合は,これを WEB-INF/Applications.にあるディレクトリに置くようにしなければならない.
前のセクションのステップを逆方向に進むと,MSP Taglibを使っているJSPをMSPに戻すことができます.これは,上記以外のJSPの機能が使われておらず,使われているMSP Taglibのタグがmsp:allocateKernelとmsp:evaluateだけの場合に限られます.
![]() ![]() |