宣言と式

今回は、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>
%>