JSP リファレンス

<%@taglib%>
JSP 1.0 以降

SYNOPSIS

<%@taglib
prefix*="接頭辞"
uri†1="URI"
tagdir†1="URI"
%>

説 明

JSP で拡張タグライブラリを使用するためのディレクティブです。

サーブレットコンテナでは独自の機能を持った拡張タグを作成して JSP 内で使用することが出来ます。 この JSP で使用する拡張タグの定義 (TLD) はどこに定義されているか、また、JSP 内でそのタグを 識別するプレフィクスは何かをこのディレクティブで指定します。

属 性

prefix="接頭辞"
required

JSP 内でこの拡張タグを識別するためのプレフィクス (接頭辞) です。 同じ JSP 内で使用する別の拡張タグライブラリとバッティングしなければ好きな名前を付けることが出来ます (読みやすさの観点から JSTL, Struts など広く使われているライブラリのプレフィクスとは別にして おいたほうが無難です)。

uri="URI"
selective required 1

拡張タグライブラリの TLD (Tag Library Descriptor) ファイルの場所を指定します。 実在する TLD ファイルの URI を指定するか、web.xml<taglib-uri> で定義した URI を指定します。

また META-INF/taglib.tld にタグライブラリの定義を含む JAR ファイルのパスを 指定することも出来ます (未確認情報)。

tagdir="URI"
JSP 2.0 以降 selective required 1

拡張タグとして使用するタグファイルが保存されているディレクトリを指定します。 このディレクトリの foo.tag というタグファイルは <prefix:foo> という名前で呼び出すことが出来ます。

タグファイルのディレクトリは /WEB-INF/tags から始まる必要があります。

使用例

JSP で JSTL の Core タグライブラリを使用できるようにします。JSP からは web.xml で定義した URI を使用しています (その TLD ファイルが実際はどこにあるかは web.xml で定義します)。
JSP
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1 + 1 := <c:out value="${1 + 1}" />
web.xml
<taglib>
    <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
上記を直接 TLD ファイルを参照する形式に書き換えても同じ動作になりますが、 多くの JSP から参照される TLD は直接記述しない方がファイルの配置場所を変更 しやすくなります。
JSP
<%@ taglib prefix="c" uri="/WEB-INF/tld/c.tld" %>
1 + 1 := <c:out value="${1 + 1}" />
web.xml<taglib-uri> は TLD の保存場所のエイリアスのようなものです。 既存の JSP を変更しないで保存場所を整理したい場合などにも使用できます。
JSP
<%@ taglib prefix="c" uri="/WEB-INF/tld/c.tld" %>
1 + 1 := <c:out value="${1 + 1}" />
web.xml
<taglib>
    <taglib-uri>/WEB-INF/tld/c.tld</taglib-uri>
    <taglib-location>/WEB-INF/tld/jstl/c.tld</taglib-location>
</taglib>
<taglib-uri> にグローバルな URL を指定しても、TLD ファイルを その URL でアクセス可能にしておく必要はありません。この URL は XML スキーマや Java のパッケージと同様に、名前空間の区別に利用しているだけです。
CVS 2008/03/09