本ドキュメントは、Java Server Pages 標準タグライブラリ (JSTL) 実装である、 Standard Taglib の立ち上げ方やすぐに動かすための手順を記述したものです。 JSTL の持つ機能に興味のある JSP ページの著者やカスタムタグの開発者の役に立ってくれることでしょう。 また "standard-examples" アプリケーションを活用することも、JSTL の機能や使い方に慣れるための最も良い方法といえます。
JSTL とは、Java Server Pages 標準タグライブラリのことです。 Java Community Process (JCP) の努力により、JSR-052 Expert Group を通じて発表されました。
JSTL は、多くの JSP アプリケーション上で共通利用する基本機能を、シンプルなタグとしてカプセル化したものです。 例えば、リストの反復処理をスクリプトレットや多くのベンダから提供されている異なったタグを使用する代わりに、 JSTL では、使う場所に関係なく反復処理を行うことのできる <forEach> という標準タグを定義しています。
この標準化により、1つのタグを覚えるだけで、様々な JSP コンテナで同じタグを使用することが可能になります。 また、タグが標準化されることにより、コンテナは標準タグを認識すると同時に、標準タグの実装に合わせて最適化することが可能になります。
JSTL では、基本となる「反復」や「条件分岐」、「テキスト挿入」、「国際化と書式タグ」、「XML操作タグ」をサポートしています。 また、JSP ページの開発を簡単にする 式言語 ( Expression Language ) もサポートしています。 開発者は JSTL の持つ拡張メカニズムに興味をもってくれることでしょう。 さらに JSTL では、既存のカスタムタグを JSTL タグへ統合するためのフレームワークも提供しています。
過去リリースからの更新状況に関しては、 リリースノート を参照してください。
http://java.sun.com/products/jstl にある Sun の公式 JSTL ページに、JSTLの学習を手助けする書籍や資料の一覧があります。
Standard Taglib は、JSP 1.2 仕様で追加された機能を使用していますので、
動作には JSP 1.2 仕様に準拠したコンテナが必要となります。
Standard Taglib のテスト環境として Tomcat 4.0 をお薦めします。
[ 訳注: Tomcat 4.1 も Standard Taglib のテスト環境として十分に適しています。 ]
Tomcat のインストールに関しては、 http://jakarta.apache.org/tomcat に書かれている手順に従ってください。 そして、Web アプリケーション上で利用する目的で Standard Taglib をインストールするには、 http://jakarta.apache.org/taglibs/binarydist.html に書かれている手順に従ってください。 また、"standard-examples" アプリケーションを手引きとして利用することも可能です。
Jakarta Taglibs ディストリビューションから Standard Taglib を利用するには、 ディストリビューションの 'lib' ディレクトリにある JAR ファイルをアプリケーションの WEB-INF/lib ディレクトリへコピーするだけです。 次の JAR ファイルは Standard Taglib ディストリビューションに含まれており、 アプリケーションの WEB-INF/lib ディレクトリへコピーされていないといけません。
| 名称 | 説明 | Jar ファイル名 | ||||||
|---|---|---|---|---|---|---|---|---|
|
JSTL 1.0 API クラス。
|
jstl.jar
|
|||||||
|
Standard Taglib JSTL 実装クラス。
|
standard.jar
|
|||||||
|
XPath 式で記述された値を評価する XPath エンジン。
|
jaxen-full.jar
|
|||||||
|
XPath 式の規則に基づいた構文解析を行うための一つの方法を提供した
XPath の汎用 API 。
|
saxpath.jar
|
|||||||
|
JDBC 実装クラス。 J2SE 1.4 には標準で含まれています。 |
jdbc2_0-stdext.jar
|
|||||||
|
Standard Taglib では、JAXP 1.1
または 1.2 と互換性のあるパーサが必要です。
|
|
|||||||
|
Apache XML Xalan XSLT Xalan 2.2.D12 またはそれ以降のバージョンを使用する際には、
JAXP API に含まれている xml-apis.jar を入手しておく必要があるでしょう。 |
xalan.jar
|
|||||||
Standard Taglib は、次のように構成されています。
| 機能名 | URI | 接頭辞 | 記述例 |
|---|---|---|---|
| コア | http://java.sun.com/jstl/core |
c
|
<c:tagname ...> |
| XML 操作 | http://java.sun.com/jstl/xml |
x
|
<x:tagname ...> |
| I18N フォーマット | http://java.sun.com/jstl/fmt |
fmt
|
<fmt:tagname ...> |
| データベースアクセス (SQL) | http://java.sun.com/jstl/sql |
sql
|
<sql:tagname ...> |
Standard Taglib の使い方は簡単です。 taglib 指示子を使う JSP ページ上で taglib 接頭辞を普通に宣言してください。 例えば、JSP ページ上で 'コア' JSTL ライブラリを宣言するには、 JSP ページの先頭に次のような一行を挿入します。
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
JSTL の約半分のタグ -- 一押しのタグ -- は、式言語が欠かせません。 JSP ページの著者は、式言語 ( EL ) を使うことにより、 アプリケーション内部のデータへのアクセスや操作が簡単になります。
デフォルト版の式言語 ( EL ) に関する概要や詳しい定義については、
JSTL 1.0 仕様
の第3章、および、付録Aを参照してください。
[ 訳注: JSTL 1.0 仕様の「第3章 Expression Language Overview」、「付録A Expression Language Definition」を参照してください。 ]
Standard Taglib の初期バージョンでは、式言語の実験およびフィードバックを促進するために、いくつかの異なった式言語を切り替えて使用していました。 その後、式言語のデフォルト版が決定されたことにより、式言語を数種類でサポートする必要がなくなりました。
このライブラリに含まれる EL 版のタグにセットされた属性においては、 要求時属性値 ( rtexprvalue ) を ( スクリプトレット式として ) 受け入れません。 その代わりに、タグの実行時に評価するリテラル式を指定します。 例えば、このような感じです。
<c:forEach items="${page.myItems}" />
( 機能仕様について ) 十分に議論しあった結果、JSTL に、「反復」、「条件分岐」、および、「式言語」をサポートするコアタグが含まれるようになりました。
なお、これらのタグの働きに関する細かい情報をもっと知りたい場合は、JSTL 仕様 を参照してください。
ここでは、少しでも早く慣れてもらえるよう、各機能のクイックロードマップをさっそく紹介していきます。
カスタムタグの開発者は、JSTL 仕様 も必ず参照するようにしてください。 JSTL では、より短い時間でタグを開発できるよう支援してくれたり、カスタムタグを JSTL タグセットへ統合させるための抽象クラスをいくつか用意しています。
例えば、カスタムタグでは JSTL の持つ式言語のメカニズムを利用することができます。 他の例として、javax.servlet.jsp.jstl.core.ConditionalTagSupport を継承することにより、 そのタグであなたのやりたい条件分岐処理の振舞に対する boolean 値を返すメソッドを単純に実装すればよいだけの、独自の条件分岐タグを書くことができます。 また、この基底クラスは、JSTL の条件分岐タグの設計に対する推奨モデルを促進します。
同様に、 javax.servlet.jsp.jstl.core.IteratorTagSupport を使うと、 反復タグを簡単に実装することができます。 <forEach> と <forTokens> のタグハンドラは、このクラスを継承しています。 従って、自作可能なカスタムサブタグと反復タグとが連動するための明確なメカニズムを提供する javax.servlet.jsp.jstl.core.IteratorTag インターフェースを実装しています。 そのようなカスタムサブタグの使用方法に関する一例が載っている "standard-examples" アプリケーションを参照してください。
現在、JSTL を取り上げている下記の書籍が発売中です。