JSP <%! declaration %>

このタグの中に変数やオブジェクトのインスタンスの使用宣言を書き込むと、初回のJSPファイルの起動で変数やインスタンスが生成されます。サーバが起動されている間、それらは値を保持します。それらの値はJSPファイルを使用するクライアント全てに共通です。そしてメソッドも定義しておくことができます。

構文

HTML文書の中でJavaの変数やメソッドを宣言することができる。

<%! 宣言文 %>

次にJSPの宣言文を使用したソースの例を示します。countは0から10までの値をとるようにしています。「増やす」ボタンで増加、「減らす」ボタンで減少、「リセット」ボタンで0に戻ります。

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
    <%!
      int count = 0;
      public int inc(int c) { if(c<10) return ++c; else return c; }
      public int dec(int c) { if(c>0) return --c; else return c; }
      public int reset(int c) { return 0; }
    %>
    <title>JSP Declaration sample</title>
  </head>
  <body>
    <%
      if((request.getParameter("reset")) != null)
        count = reset();
      if((request.getParameter("inc")) != null)
        count = inc(count);
      if((request.getParameter("dec")) != null)
        count = dec(count);
    %>
    <h1>カウンタの増減</h1>
    <p>カウンタの値: <%= count %></p>
    <form method="post" action="incsamp.jsp">
      <input type="submit" name="inc" value="増やす">
      <input type="submit" name="dec" value="減らす">
      <input type="submit" name="reset" value="リセット">
    </form>
  </body>
</html>

上記のJSPを実行した際、ブラウザに送信されるHTMLを次に示します(countの値が3になっている状態の例)。

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
    <title>JSP Declaration sample</title>
  </head>
  <body>
    <h1>カウンタの増減</h1>
    <p>カウンタの値: 3</p>
    <form method="post" action="incsamp.jsp">
      <input type="submit" name="inc" value="増やす">
      <input type="submit" name="dec" value="減らす">
      <input type="submit" name="reset" value="リセット">
    </form>
  </body>
</html>