Apache Jakartaプロジェクトのサブプロジェクトの1つに、Taglibsプロジェクトがあります。これは、JSPで利用可能なタグライブラリのオープンソースリポジトリとなることを目標として、利用性の高いタグライブラリの開発と公開を行うプロジェクトです。
ここで開発されているタグライブラリの1つに「Jakarta Taglibs - Standard Taglib(以下Standard Tablib)」があります。これは、ユーザーによく利用される共通的な機能を提供するためのタグライブラリです。このような高い汎用性を求められるタグライブラリは、仕様が標準化されていた方が利用者は安心して使用できます。さらには普及の足掛かりにもなるでしょう。このような理由から、JSR-052として標準仕様の策定が行われました。その結果、JSP Standard Tag Library(JSTL)という標準仕様が決まったのです。Standard Taglibは、実はこのJSTLのリファレンス実装でもあるのです。すなわち、仕様の策定に当たっては、リファレンス実装も並行して公開され、そこからのフィードバックも仕様策定に反映されたというわけです(図1)。
JSPでは、HTMLを書くときに近い感覚でユーザーインターフェイスを作成することができます。その半面、条件分岐や繰り返しのためのタグをサポートしていないので、データベースから取り出したデータを一覧表で表示したり、同じフォーマットで繰り返し表示するといったことができません。しかし、JSTLを利用すれば、そのような表示のための処理の制御をタグベースで表現できるようになります。JSTLを使用した場合のデザイナーとプログラマとの分担例を図2に示します。
JSTLは、今回紹介するようにプロトタイプをJSPだけで作成したい場合などにも利用できます。ユーザーからのフィードバックを得るためには、サービスイメージや画面イメージを早めにユーザーに見せたいところです。JSTLを導入すれば、サーバ側の実装が完成しなくても、完成イメージをユーザーへプレゼンテーションできるようになります。
それでは、さっそくインストールしましょう。Tomcatがすでにインストールされており、インストールディレクトリは$CATALINA_HOMEと表記することを前提とします。また、RDB(PostgreSQL、MySQLなど)もすでにインストールされており、JDBCを使って利用することができるように設定されているとします。また、ここでは、Jakarta Tomcat 4.1.24とstandard Taglib 1.0.3を使用して説明します。
まず、ここより、standard Taglib 1.0.3のバイナリファイル(jakarta-taglibs-standard-1.0.3.zipまたはjakarta-taglibs-standard-1.0.3.tar.gz)をダウンロードします。アーカイブファイルを展開すると、右の図3のようにjakarta-taglibs/standard-1.0.3というディレクトリが作成されます。StandardTaglibをWebアプリケーションで利用するには、このディレクトリ配下のlibディレクトリとtldディレクトリに含まれるファイルを使用します。
standard Taglibには、standard-doc.warとstandard-examples.warというサンプルアプリケーションが同梱されています。これらのファイルは前述のjakarta-taglibs/standard-1.0.3ディレクトリに含まれています。standard-doc.warはStandard Taglibのドキュメントアプリケーションですし、standard-examples.warは、各タグの使用方法を具体的に示すサンプルアプリケーションです。ただし、standard-examples.warで使用されているクラスファイルのソースコードは付いていません。WebアプリケーションにおいてStandard Taglibを利用する方法の詳細を知るためには、Standard Taglib 1.0.3のソースコードファイルもダウンロードして、調べてみるのがよいでしょう。ここでは紙面の都合上、これらについての説明は省略します。
まず、$CATALINA_HOME/webappsに、standard-doc.warとstandard-examples.warとを配置し、Tomcatを起動します。次に、http://localhost:8080/standard-examples/にアクセスすると、画面1が表示されるはずです。表示されない場合は、Tomcatの設定を見直すなり、warファイルを手動で展開するなりして対応してください。
トップページ内のExamplesに含まれる例の簡単な説明を表1に一覧しました。これを参考にしながら、興味のあるタグの動作を確認してください。英語が苦手な方は、The Ja-Jakarta ProjectのオフィシャルサイトTaglibsサブプロジェクト(http://www.jajakarta.org/taglibs/)にて、小川環氏が中心になって作成した日本語版が公開されています。そちらを利用するのもよいでしょう。
項目 | 説明 | |
---|---|---|
General Purpose Tags | 基本的なタグ | |
Conditional Tags | 条件選択タグ | |
Iterator Tags | 反復タグ | |
Import Tags | 入力タグ | |
I18N & Formatting Tags | 国際化と書式タグ | |
XML Tags | XMLタグ | |
SQL Tags | SQLタグ | |
Tag Library Validators | タグライブラリ妥当性検査 | |
Miscellaneous | そのほかもろもろ | |
タグの動作確認を簡単にしたところで、早速簡単なWebアプリケーションを作成してみましょう。本稿では、よくWeb上で見掛ける「アンケート付きクイズページ」のひな形を作ることにしました。まずは設計について簡単な説明をします。作成するJSPファイルは以下の5本です。
(1)の画面が画面遷移を制御します。画面遷移の順番は、基本的には、(2)から順に(5)へ進むようにします。ページデザインはサンプルなので、できるだけシンプルにしてあります。アンケートの入力結果は、RDB(本稿ではPostgreSQLを使用)へ保存することにします。使用するデータベース名はdbq、テーブル名はtbl_qとします。テーブル設計を表2に示します。
項目 | カラム名 | データ型 (PostgreSQL) |
データ型 (JDBC) |
データ型 (Java) |
オプション | |
---|---|---|---|---|---|---|
ID番号 | no | INTEGER | INTEGER | int | PRIMARY KEY | |
VARCHAR | LONGVARCHAR | String | NOT NULL | |||
年齢 | age | INTEGER | INTEGER | int | ||
クイズの答 | answer | CHAR(1) | CHAR(1) | String | ||
参考までに、PostgreSQLでこのテーブルを作成するSQL文は、リスト1のようになります。
CREATE TABLE tbl_q ( no INTEGER NOT NULL, email TEXT NOT NULL, age INTEGER, answer CHAR(1), PRIMARY KEY(no) );
Copyright © ITmedia, Inc. All Rights Reserved.