ディレクティブにより、JSP と結果として求められるサーブレットのプロパティを設定できます。ディレクティブによって定義される情報の例には、JSP のスクリプト言語、出力 MIME タイプ、ページによって使用されるタグ ライブラリ、ページで必要とされるインクルード ファイルなどがあります。
通常は、ディレクティブを使用して JSP のスクリプト言語を設定します。既定の設定では、Java が使用されます。しかし、次のディレクティブを使用して、スクリプト言語を JavaScript に設定できます。
<%@ page language = "javascript" %>
ディレクティブは、JSP の構文解析時に評価されるプリプロセス要素です。ディレクティブは構文解析時に評価されるのに対し、式は実行時に評価されるので、ディレクティブに式は使用できません。したがって、次の例では式 <%=myVar%>
をコンパイル時に評価できないので、この例にあるディレクティブの使用は正しくありません。
<%@ page import="<%=myVar%>" %>
また、ディレクティブは構文解釈時に評価されるので、ディレクティブからの出力はありません。つまり、ディレクティブを使用して、クライアントに情報を返すことはできません。
JSP ディレクティブすべての基本構文は次の形式になります。
<%@ directive %>
JSP では、次の表にある 3 種類のディレクティブがサポートされています。次のセクションでは、これらのディレクティブについて説明します。
ディレクティブ |
目的 |
構文 |
Section |
---|---|---|---|
page |
ページ全体にわたる属性を定義します。 |
<%@ page attribute="value" ... %> |
"page ディレクティブ" |
include |
JSP にテキストを 挿入します。 |
<%@ include file = "path" ... %> |
"include ディレクティブ" |
taglib |
JSP にタグ ライブラリを含めます。 |
<%@ taglib uri="tagLibraryURI" prefix="tagPrefix" %> |
"taglib ディレクティブ" |
page
ディレクティブにより、JSP 全体に対する 1 つ以上の属性を定義できます。
1 つの JSP で複数の page
ディレクティブを使用できます。ただし、import
属性を使用している場合を除き、1 つの属性は 1 回しか参照できません。したがって、重複する属性を持つ複数の page
ディレクティブを指定した場合、JSP にある page
ディレクティブの最初のインスタンスは認識されますが、この後、この属性を再定義しようとしても無視されます。
import
属性を含む page
ディレクティブは複数指定できます。import
属性によって参照されるファイルがすべてインポートされます。
<%@
page attribute = "value" ...%>
attribute
は、language | import | contentType | session | buffer |
autoflush | isThreadSafe | info | errorPage | isErrorpage | extends
value
は、一重引用符、または二重引用符で囲まれた文字列定数
これ以外の属性を含む page
ディレクティブでは、例外が発生します。
たとえば、次のディレクティブでは JSP の出力 MIME タイプが HTML に、スクリプト言語が JavaScript に設定されます。
<%@ page contentType
= "text/html" language = "javascript" %>
ファイルで使用されるスクリプト言語を定義します。この属性を省略した場合、
既定のスクリプト言語 java
が使用されます。これは Java プログラミング言語を
表します。
使用可能な値は java
と javascript
です。
コンパイルされたページでインポートして使用する必要のあるパッケージを、 カンマ区切りリストで指定します。次に例を示します。
<%@ page import
= "java.io.*,java.util.Hashtable" %>
JSP の言語が Java である場合、import
で指定されたファイルのほかに、JRun には
次のファイルが常にインポートされます。
java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
Java 以外の言語については、既定のインポート リストはありません。Java 以外の スクリプト言語を使用している場合、または Java を使用しているが、ほかのファ イルをインポートする必要がある場合は、必要なファイルをインポートしてくだ さい。
MIME タイプを定義します。必要に応じて、JSP により生成される応答の文字
セットを定義します。既定の設定では、MIME タイプは text/html
で、文字セット
は ISO-8859-1
です。
この属性の構文は次のとおりです。
<%@ page contentType
= "TYPE; charset = CHARSET" %>
TYPE は出力 MIME タイプを表します。また、オプションの CHARSET には、文字 セットを Internet Assigned Numbers Authority (IANA) 値で指定します。
使用可能な MIME タイプの一覧については、次の URL を参照してください。
ftp://
ftp.isi.edu/in-notes/iana/assignments/media-types/media-types
CHARSET でサポートされている文字エンコードの一覧については、次の URL を 参照してください。
http://java.sun.com/products/jdk/1.1/docs/guide/intl/
encoding.doc.html
次の contentType
の例では、出力タイプとしてテキスト形式が設定されています。
<%@ page contentType
= "text/plain" %>
このページがセッションの一部としてアクセスされるかどうかを指定します。
値に true
を指定した場合、JSP オブジェクト session
が、このページの現在の
セッションとして初期化されます。
値 false
は、このページがセッションの一部ではなく、session
オブジェクトは
使用できないことを表します。JSP の本文で session
を参照すると、致命的な変換
エラーが発生します。
既定値は true
です。
ページ出力で使用されるバッファリング モデルを表します。サイズ指定に文字列
kb
を入れる必要があります。たとえば、ディレクティブでバッファ サイズを 16 KB
に設定します。
<%@ page buffer
= "16kb" %>
値 none
は、バッファリングは行われず、ページ出力はすべて、直接クライアント
に書き込まれることを表します。
バッファ サイズを指定した場合、出力は指定されたサイズ以下のサイズでバッファ
リングされます。autoFlush
属性の値に応じて、バッファの内容は自動的にフラッ
シュされるか、または、オーバーフローが発生したときに例外が発生します。
この属性の既定値は buffered
で、バッファのサイズは 8 KB です。
値に true
を設定した場合、バッファが満杯になると、バッファリングされた出力が
自動的にフラッシュされます。false
を設定した場合、バッファのオーバーフロー
を示す例外が発生します。
既定値は true
です。buffer
が none
に設定されている場合は、 autoFlush
を
false
に設定できません。
ページごとに実装されるスレッド セーフのレベルを指定します。
この属性を false
に設定すると、複数の要求を処理するためにページのインスタ
ンスが複数作成されますが、これらのページ インスタンスはそれぞれ、1 つずつ
スレッドを持つようになります。
true
に設定すると、複数の未処理クライアント要求がこのページに対して、同時に
送信される可能性があります。JSP によって、ページの共有ステートへのアクセス
が適切に同期化されることを保証するには true
を設定します。
既定値は true
です。
JSP に組み込まれる文字列を指定します。この文字列は実行時に取得可能です。
アプリケーションからこの文字列にアクセスするには、このサーブレットを表す
Servlet
オブジェクトの getServletInfo()
メソッドを使用します。
JSP で、別の JSP からの未処理例外を処理するかどうかを指定します。
値 true
を設定すると、JSP exception
オブジェクトが定義されます。JSP が起動
されると、このオブジェクトの値がソース JSP からの例外に設定されます。
値 false
は exception
オブジェクトが使用できないことを表します。したがって、
JSP の本体からこのオブジェクトを参照すると、致命的な変換エラーが起こります。
既定値は false
です。
そのページで検出されなかった例外がエラー処理のために送信される JSP への URL を指定します。送信先の JSP は、JSP バージョン 1.1 仕様に準拠していなければ なりません。
送信先ページでは page
ディレクティブを使用して、isErrorPage
属性を true
に
設定します。
呼び出されると、送信先 JSP の exception
オブジェクトに例外に対する参照が入り
ます。
メモ
|
JSP がサブクラス化する JSP 基本クラスを指定します。次に例を示します。
<%@ page extends
= "com.myPackage.AServletImplementation" %>
既定の設定では、サーブレットはクラス javax.servlet.http.HttpServlet
の
サブクラスとして作成されます。したがって、サーブレットの基本クラスを定義
しなければならない特別な理由がない限り、この属性は使用しないでください。
include
ディレクティブにより、変換時に JSP ファイルにテキストが挿入されるので、効果的に include
ディレクティブを置き換えることができます。このディレクティブの結果、組み込み先 JSP のコンテンツと、組み込まれる JSP のコンテンツの両方が 1 つの JSP に入るようになります。
<%@
include file = "path"%>
/ で始まる path は JSP のアプリケーションに関連付けられています。パス名の先頭に / が付いていない場合、このパスは変換中の JSP のパスに関連付けられていると見なされます。パスの詳細については、"JSP における相対 URL の指定"を参照してください。
複数の JSP で共有する機能がある場合は、include
ディレクティブが便利です。include
ディレクティブの例については、101 ページの「include の実行」を参照してください。
taglib
ディレクティブを使用して、JSP が含めるタグ ライブラリを宣言できます。タグ ライブラリには JSP で使用可能なカスタム タグが含まれます。
次の例では、タグ coolTag
を含むタグ ライブラリが定義されています。このディレクティブの後でこのタグ ライブラリにあるタグを参照するには、接頭辞 myTags
を使用します。接頭辞 myTags
を使用する JSP に別のタグ ライブラリを定義すると、エラーが発生します。
<%@ taglib uri="myApp/appTags" prefix="myTags" />
<myTags:coolTag> ... </myTags:coolTag>
タグ ライブラリに coolTag
がないと、致命的な変換エラーが発生します。
<%@ taglib uri="path" prefix="tagPrefix" %>
タグ ライブラリの場所を、相対パス位置、またはアプリケーションと関連付けら
れている web.xml
ファイルへの検索キーとして指定します。JRun は、まず
web.xml
ファイルをチェックし、path が検索キーであるかどうかを判断します。
web.xml
ファイルに path が見つからない場合、JRun はこれ自体をパス位置と見な
します。
タグ ライブラリが見つからないと、致命的な変換エラーが発生します。
path が web.xml
ファイルへの検索キーである場合、JRun により web.xml
ファイル
からこのキーと関連するタグ ライブラリが検索されます。たとえば、アプリケー
ションの web.xml
ファイルで myTagLib
という検索キーと、タグ ライブラリの関連
位置を定義するには次のように記述します。
<taglib> <taglib-uri>myTagLib</taglib-uri> <taglib-location>/WEB-INF/tlibs/myTagLib.tld</taglib-location> </taglib>
path がタグ ライブラリを表す相対パスで、/ で始まっている場合、このパスは JSP のアプリケーションに関連付けられています。パス名の先頭に / が付いていない 場合、このパスは変換中の JSP のパスに関連付けられていると見なされます。パス の詳細については、"JSP における相対 URL の指定"を参照してください。
ライブラリにあるカスタム タグを表す接頭辞文字列を定義します。接頭辞 jsp
、
jspx
、java
、javax
、servlet
、sun
、および sunw
は予約されています。空の接頭辞
は使用できません。