暗黙オブジェクトをJavaScriptから使う
では、値のやりとりを利用して、JSPの機能をJavaScriptから使えるようにしてみましょう。これは、実は簡単です。JSPの暗黙オブジェクトを、JavaScriptに渡してやればいいのです。
<%
String script = request.getParameter("script");
String val = request.getParameter("val");
String result = "";
if (script != null){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
try {
engine.put("request",request);
engine.put("response",response);
engine.put("out",out);
engine.put("X",val);
engine.eval(script);
Object obj = engine.get("result");
result = obj != null ? obj.toString() : "null";
} catch(ScriptException ex){
ex.printStackTrace();
}
}
%>
スクリプトレットの部分をこのように修正しましょう。これで、request、response、outの暗黙オブジェクトがJavaScriptから利用できるようになります。
例として、JavaScriptからJSPのセッションを利用してみることにしましょう。まず、以下のように変数Xとスクリプトを設定して実行してみます。
○1回目
変数X:this is Session data!
スクリプト:
session = request.getSession();
session.setAttribute("test",X);
result = "Session data set!";
これで、セッションに"test"という変数が作成されました。では、再びスクリプトに以下のようなものを記述して実行させてみましょう。
○2回目
スクリプト:
session = request.getSession();
result = "" + session.getAttribute("test");
セッションに保存されている値が表示される。 |
result:に、先ほどセッションに保管したテキストが表示されます。セッションがきちんと機能していることがわかりますね。こんな具合に、JavaScriptからJSPの機能が利用できると、面白いことができそうです。例えば、outを使えばJavaScriptから直接クライアント側に出力することもできますね。