式の評価を出力

広告

JSPではスクリプトレットで定義した変数の値などをHTML文として簡易的に表示するための書式が用意されています。構文は次のようになります。

<%= 変数名など %>

スクリプトレット内でHTML文として出力する場合には「out.println(出力する値)」と記述しますが、これを先ほどの方式を使って「<%= 出力する値 %>」のように書き換える事が出来ます。

より具体的に見るために前のページのサンプルを見てみましょう。(一部抜粋です)。

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

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

<%
out.println(sum);
%>

です。
</p>

この中で変数「sum」を出力している部分がありますが、次のように書き換える事が出来ます。

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

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

<%= sum %>

です。
</p>

このように変数の値を出力する場合や、定数や計算式の結果などを表示することもできます。「out.println()」の括弧の中に記述する代わりに簡易的に記述できるようなものと考えておいて下さい。(実際にはout.println()ではなくout.print()に変換されます)。

例えば次のような記述が出来ます。

<%= "こんにちは" %>
<%= "sum = " + sum %>
<%= Integer.parseInt(8) %>

※「out.println()」の括弧の中の部分ですので、Javaのコードを記述する場合も最後にセミコロン(;)は付けないで下さい。

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

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

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

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

dispsum2.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まで加えた合計の値は

<%= sum %>

です。
</p>

</body>
</html>

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

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

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

式の評価

念のためにサーブレットに変換されるとどのようになるのかを見ておきます。(変換されるファイルの置き場所などは『JSPからサーブレットへの変換』を参照して下さい)。

  out.write("¥r¥n");
  out.write("¥r¥n");
  out.write("<html>¥r¥n");
  out.write("<head>¥r¥n");
  out.write("<title>計算テスト</title>¥r¥n");
  out.write("</head>¥r¥n");
  out.write("<body>¥r¥n");
  out.write("<h1>計算テスト</h1>¥r¥n");
  out.write("¥r¥n");

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

  out.write("¥r¥n");
  out.write("¥r¥n");
  out.write("<p>¥r¥n");
  out.write("1から10まで加えた合計の値は¥r¥n");
  out.write("¥r¥n");
  out.print( sum );
  out.write("¥r¥n");
  out.write("¥r¥n");
  out.write("です。¥r¥n");
  out.write("</p>¥r¥n");
  out.write("¥r¥n");
  out.write("</body>¥r¥n");
  out.write("</html>¥r¥n");

式の評価の部分は「out.print()」に変換されているようです。

( Written by Tatsuo Ikura )