JSP リファレンス

<%! %>
JSP 1.0 以降

SYNOPSIS

<%! %>

説 明

JSP がサーブレットに変換された時のインスタンス変数、クラス変数、 メソッドなどの宣言 (Declaration) を記述します。

スクリプトレットが出力処理中のコード として埋め込まれるのに対して、このディレクティブは JSP から生成される クラスの変数やメソッド部分に置き換えられます。通常は JSP 内で使用する 定数やメソッドを定義するのに使用します。

いくつかの JSP で共通の定数やメソッドは外部ファイルに定義して <%@include%> を使用すると 便利です。

ここで宣言したインスタンス変数は複数のスレッドで共有されるので注意 してください (isThreadSafe="true" の場合)。 安全のため、ここで宣言する変数は全て static final を付ける 事をお勧めします。static final を付けられない変数はそもそも ここで宣言すべきではありません。

JSP 2.0 からは <jsp:declaration> で記述することが出来ます。

参照: <% %>  <%@include%> 

使用例

JSP 内で使用する定数とメソッドを定義します。
JSP
<% if(DEBUG){ %>
    注意:デバッグモードです。
<% } %>

あなたの入力した値は <%= escape(param.getParameter("text")) %> です。

<%!
    // デバッグフラグ
    private static final boolean DEBUG = true;

    // 文字列を HTML 出力用にエスケープ
    private static String escape(String text){
        StringBuilder buffer = new StringBuilder();
        for(int i=0; i<text.length(); i++){
            char ch = text.charAt(i);
            switch(ch){
            case '<':    buffer.append("&lt;");    break;
            case '>':    buffer.append("&gt;");    break;
            case '&':   buffer.append("&amp;");   break;
            case '\"": buffer.append("&quot;");  break;
            default:        buffer.append(ch);            break;
            }
        }
        return buffer.toString();
    }
%>
CVS 2008/03/09