|
8.1 MSPスクリプトのJSPへの変換
8.1 MSPスクリプトのJSPへの変換 このセクションではMSPスクリプトとMSP Taglibを使っているJSPの変換について説明します.MSPで使えるMathematica のコマンドのほとんどがJSPでも使えます.ですから,MSPをJSPに変換することは可能です.JSPで使うことのできないMathematica のコマンドはMSPIncludeだけです.この機能を使わなければならないのなら,代りにjsp:includeを使うようにしなければなりません.しかし,JSPのメカニズムはMSPのそれよりもはるかに豊かなので,JSPの中にはMSPに変換するのが困難なものもあります. 8.1.1 MSPのJSPへの変換 これは例題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にあるディレクトリに置くようにしなければならない. 8.1.2 JSPのMSPへの変換 前のセクションのステップを逆方向に進むと,MSP Taglibを使っているJSPをMSPに戻すことができます.これは,上記以外のJSPの機能が使われておらず,使われているMSP Taglibのタグがmsp:allocateKernelとmsp:evaluateだけの場合に限られます.
     
|