スクリプトレット

広告

まず最初にスクリプトレットについて見ていきます。Javaのコードを記述する部分になります。構文は次のようになります。

<%
Javaのコード
%>

前に使ったサンプルを今一度見てみましょう。

<%@ page contentType="text/html;charset=Shift_JIS" %>

<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>

<%
out.println(new java.util.Date());
%>

</body>
</html>

上記の赤色の部分がスクリプトレットになります。JSPページの中でJavaのプログラムを記述する部分を「<%」から「%>」の中に記述します。

記述できるコードは1行だけではなく複数行に渡って記述することができ、記述できる内容はJavaのプログラムを記述する場合と同じです。例えば次のサンプルでは「for」文を使っています。

<%@ page contentType="text/html;charset=Shift_JIS" %>

<html>
<head>
<title>計算テスト</title>
</head>
<body>
<h1>計算テスト</h1>

<%
int sum = 0;
for (int i = 0 ; i <= 10 ; i++){
  sum = sum + i;
}
out.println("1から10まで加えた合計の値は");
out.println(sum);
out.println("です");
%>

</body>
</html>

注意する点として上記の例では「out」と言う変数を特に宣言せずに利用しています。これは暗黙オブジェクトと呼ばれるもので、JSPページでは最初から利用できるようになっているオブジェクトです。詳しくは暗黙オブジェクトのページで見ていきます。

また「out.println」の部分はHTMLとして表示する部分になりますのでスクリプトレットの外に出して次のように記述しても構いません。

<%@ page contentType="text/html;charset=Shift_JIS" %>

<html>
<head>
<title>計算テスト</title>
</head>
<body>
<h1>計算テスト</h1>

<%
int sum = 0;
for (int i = 0 ; i <= 10 ; i++){
  sum = sum + i;
}
%>

1から10まで加えた合計の値は

<%
out.println(sum);
%>

です。

</body>
</html>

JSPからサーブレットへの変換』で見たとおり、JSPページはいったんサーブレットに変換されます。その時にHTML文が記述された箇所は、「out.write(HTML文)」に変換されますので結局は同じ内容になるわけです。HTML文で記述するかスクリプトレットの中で「out.write()」を使って出力するかはどちらでも構いません。見やすい方を使います。

またこのサンプルのようにスクリプトレットが1つのJSPページ内で分かれていても変数名などは共有して使われます。これはJSPページ単位で1つのメソッドを記述しているようなものであり、スクリプトレットはスコープのような変数の影響範囲を区別するようなものではなく、サーブレットに変換する際にそのまま残る部分を区別しているだけのものだからです。

サンプルプログラムの実行

それでは実際に試してみましょう。コンテキストファイルは今までと同じく次のようにします。

<Context path="/hellojsp"
docBase="d:/jsp-sample/hello"/>

JSPページは次のようになります。

dispsum.jsp

<%@ page contentType="text/html;charset=Shift_JIS" %>

<html>
<head>
<title>計算テスト</title>
</head>
<body>
<h1>計算テスト</h1>

<%
int sum = 0;
for (int i = 0 ; i <= 10 ; i++){
  sum = sum + i;
}
%>

<p>
1から10まで加えた合計の値は

<%
out.println(sum);
%>

です。
</p>

</body>
</html>

JSPページはコンテキストファイルで指定したドキュメントルートの直下に置いておきます。

[D] -- jsp-sample
        |
        +-- hello
        |    |
             +-- (dispsum.jsp)
             |

それでは「http://localhost/hello/dispsum.jsp」にブラウザからアクセスします。次のように表示されれば成功です。

スクリプトレット

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)