今回は、JSPの構成要素である「宣言」と「式」について見ていきます。
宣言(Declaration)
変数、メソッドは下記のように記述し、宣言します。
<!% 宣言文; %>
宣言文もJavaの文であるため、最後に「;」が必要です。
変数の宣言
<!% int cnt = 10; %>
前回の記事では、下記のようにスクリプトレット内に変数を定義していました。
<% int cnt = 10; if(cnt < 10) { out.println("<h2>10未満です。</h2>"); } else { out.println("<h2>10以上です。</h2>"); } %>
スクリプトレットと宣言、両者の違いは、スクリプトレットで定義した変数はローカル変数、宣言で定義した変数はインスタンス変数になる点です。
インスタンス変数の場合、初めてリクエストが合ったときに一度だけ初期化され、その後のリクエストにおいては変数の値は初期化されることなく、JSPコンテナ(Tomcat)を再起動するまで、値が保持されます。
ローカル変数の場合は、リクエストがある都度、変数が初期化されます。
宣言では変数以外に、メソッドの定義もできます。
<!% public String getText() { String str = new String("Sample"); return str; } %>
式(Expression)
式を記述することで、変数の値や式の結果、メソッドの戻り値をHTML内に埋め込むことができます。
<=% 式 %>
宣言では最後に「;」が必要ですが、式はJavaの文ではないので「;」は不要です。
<% String name = new String("まんじゅう"); int price = 100; %> <p>商品名:<%= name %></p> <p>価格:<%= price %></p>
JSPページを作成する際、上記のように動的に変化する文字列を表示したい場合は、式を利用することで、簡単に実装できます。もちろん、これまでどおりスクリプトレット内でprint()メソッドを使用しても同じ結果となります。
下記のようにメソッドの戻り値を表示することもできます。
<!% public String getText() { String str = new String("Sample"); return str; } <p>メソッド戻り値:<%= getText() %></p> %>