ディレクティブ

ディレクティブにより、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 ディレクティブ

page ディレクティブにより、JSP 全体に対する 1 つ以上の属性を定義できます。

1 つの JSP で複数の page ディレクティブを使用できます。ただし、import 属性を使用している場合を除き、1 つの属性は 1 回しか参照できません。したがって、重複する属性を持つ複数の page ディレクティブを指定した場合、JSP にある page ディレクティブの最初のインスタンスは認識されますが、この後、この属性を再定義しようとしても無視されます。

import 属性を含む page ディレクティブは複数指定できます。import 属性によって参照されるファイルがすべてインポートされます。

page ディレクティブの構文は次のとおりです。

<%@ 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" %>
language

ファイルで使用されるスクリプト言語を定義します。この属性を省略した場合、 既定のスクリプト言語 java が使用されます。これは Java プログラミング言語を 表します。

使用可能な値は javajavascript です。

import

コンパイルされたページでインポートして使用する必要のあるパッケージを、 カンマ区切りリストで指定します。次に例を示します。

<%@  page import = "java.io.*,java.util.Hashtable" %>

JSP の言語が Java である場合、import で指定されたファイルのほかに、JRun には 次のファイルが常にインポートされます。

contentType

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" %>
session

このページがセッションの一部としてアクセスされるかどうかを指定します。

値に true を指定した場合、JSP オブジェクト session が、このページの現在の セッションとして初期化されます。

false は、このページがセッションの一部ではなく、session オブジェクトは 使用できないことを表します。JSP の本文で session を参照すると、致命的な変換 エラーが発生します。

既定値は true です。

buffer

ページ出力で使用されるバッファリング モデルを表します。サイズ指定に文字列 kb を入れる必要があります。たとえば、ディレクティブでバッファ サイズを 16 KB に設定します。

<%@  page buffer = "16kb" %>

none は、バッファリングは行われず、ページ出力はすべて、直接クライアント に書き込まれることを表します。

バッファ サイズを指定した場合、出力は指定されたサイズ以下のサイズでバッファ リングされます。autoFlush 属性の値に応じて、バッファの内容は自動的にフラッ シュされるか、または、オーバーフローが発生したときに例外が発生します。

この属性の既定値は buffered で、バッファのサイズは 8 KB です。

autoFlush

値に true を設定した場合、バッファが満杯になると、バッファリングされた出力が 自動的にフラッシュされます。false を設定した場合、バッファのオーバーフロー を示す例外が発生します。

既定値は true です。buffernone に設定されている場合は、 autoFlushfalse に設定できません。

isThreadSafe

ページごとに実装されるスレッド セーフのレベルを指定します。

この属性を false に設定すると、複数の要求を処理するためにページのインスタ ンスが複数作成されますが、これらのページ インスタンスはそれぞれ、1 つずつ スレッドを持つようになります。

true に設定すると、複数の未処理クライアント要求がこのページに対して、同時に 送信される可能性があります。JSP によって、ページの共有ステートへのアクセス が適切に同期化されることを保証するには true を設定します。

既定値は true です。

info

JSP に組み込まれる文字列を指定します。この文字列は実行時に取得可能です。 アプリケーションからこの文字列にアクセスするには、このサーブレットを表す Servlet オブジェクトの getServletInfo() メソッドを使用します。

isErrorPage

JSP で、別の JSP からの未処理例外を処理するかどうかを指定します。

true を設定すると、JSP exception オブジェクトが定義されます。JSP が起動 されると、このオブジェクトの値がソース JSP からの例外に設定されます。

false exception オブジェクトが使用できないことを表します。したがって、 JSP の本体からこのオブジェクトを参照すると、致命的な変換エラーが起こります。

既定値は false です。

errorPage

そのページで検出されなかった例外がエラー処理のために送信される JSP への URL を指定します。送信先の JSP は、JSP バージョン 1.1 仕様に準拠していなければ なりません。

送信先ページでは page ディレクティブを使用して、isErrorPage 属性を true に 設定します。

呼び出されると、送信先 JSP の exception オブジェクトに例外に対する参照が入り ます。


メモ

autoFlushtrue に設定したときに、例外を返したページからの出力データが すべてフラッシュされた場合、エラー ページへ例外を返そうとしても、失敗する 可能性があります。


extends

JSP がサブクラス化する JSP 基本クラスを指定します。次に例を示します。

<%@  page extends = "com.myPackage.AServletImplementation" %>

既定の設定では、サーブレットはクラス javax.servlet.http.HttpServlet の サブクラスとして作成されます。したがって、サーブレットの基本クラスを定義 しなければならない特別な理由がない限り、この属性は使用しないでください。

include ディレクティブ

include ディレクティブにより、変換時に JSP ファイルにテキストが挿入されるので、効果的に include ディレクティブを置き換えることができます。このディレクティブの結果、組み込み先 JSP のコンテンツと、組み込まれる JSP のコンテンツの両方が 1 つの JSP に入るようになります。

このディレクティブの構文は次のとおりです。

<%@ include file = "path" %> 

/ で始まる path は JSP のアプリケーションに関連付けられています。パス名の先頭に / が付いていない場合、このパスは変換中の JSP のパスに関連付けられていると見なされます。パスの詳細については、"JSP における相対 URL の指定"を参照してください。

複数の JSP で共有する機能がある場合は、include ディレクティブが便利です。include ディレクティブの例については、101 ページの「include の実行」を参照してください。

taglib ディレクティブ

taglib ディレクティブを使用して、JSP が含めるタグ ライブラリを宣言できます。タグ ライブラリには JSP で使用可能なカスタム タグが含まれます。

次の例では、タグ coolTag を含むタグ ライブラリが定義されています。このディレクティブの後でこのタグ ライブラリにあるタグを参照するには、接頭辞 myTags を使用します。接頭辞 myTags を使用する JSP に別のタグ ライブラリを定義すると、エラーが発生します。

<%@ taglib uri="myApp/appTags" prefix="myTags" />
<myTags:coolTag>
...
</myTags:coolTag>

タグ ライブラリに coolTag がないと、致命的な変換エラーが発生します。

taglib ディレクティブの構文は次のとおりです。

<%@ taglib uri="path" prefix="tagPrefix" %>
uri

タグ ライブラリの場所を、相対パス位置、またはアプリケーションと関連付けら れている 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 の指定"を参照してください。

prefix

ライブラリにあるカスタム タグを表す接頭辞文字列を定義します。接頭辞 jspjspxjavajavaxservletsun、および sunw は予約されています。空の接頭辞 は使用できません。