第10回 JSP開発を効率化するTaglibs


小山博史
Ja-Jakarta Project
2003/9/19


 Apache Jakartaプロジェクトのサブプロジェクトの1つに、Taglibsプロジェクトがあります。これは、JSPで利用可能なタグライブラリのオープンソースリポジトリとなることを目標として、利用性の高いタグライブラリの開発と公開を行うプロジェクトです。

 ここで開発されているタグライブラリの1つに「Jakarta Taglibs - Standard Taglib(以下Standard Tablib)」があります。これは、ユーザーによく利用される共通的な機能を提供するためのタグライブラリです。このような高い汎用性を求められるタグライブラリは、仕様が標準化されていた方が利用者は安心して使用できます。さらには普及の足掛かりにもなるでしょう。このような理由から、JSR-052として標準仕様の策定が行われました。その結果、JSP Standard Tag Library(JSTL)という標準仕様が決まったのです。 Standard Taglibは、実はこのJSTLのリファレンス実装でもあるのです。すなわち、仕様の策定に当たっては、リファレンス実装も並行して公開され、そこからのフィードバックも仕様策定に反映されたというわけです(図1)

図1 JSTLと Standard Taglibの関係

 JSPでは、HTMLを書くときに近い感覚でユーザーインターフェイスを作成することができます。その半面、条件分岐や繰り返しのためのタグをサポートしていないので、データベースから取り出したデータを一覧表で表示したり、同じフォーマットで繰り返し表示するといったことができません。しかし、JSTLを利用すれば、そのような表示のための処理の制御をタグベースで表現できるようになります。JSTLを使用した場合のデザイナーとプログラマとの分担例を図2に示します。

図2 デザイナーとプログラマとの分担例

 JSTLは、今回紹介するようにプロトタイプをJSPだけで作成したい場合などにも利用できます。ユーザーからのフィードバックを得るためには、サービスイメージや画面イメージを早めにユーザーに見せたいところです。JSTLを導入すれば、サーバ側の実装が完成しなくても、完成イメージをユーザーへプレゼンテーションできるようになります。

  インストールとサンプルアプリケーションの起動


図3 Jakarta Taglibs standard Taglibraries 1.0.3に含まれるファイル
  それでは、さっそくインストールしましょう。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ファイルを手動で展開するなりして対応してください。

画面1 Examples Web Applicationのトップページ (画面をクリックすると拡大します)

 トップページ内のExamplesに含まれる例の簡単な説明を表1に一覧しました。これを参考にしながら、興味のあるタグの動作を確認してください。英語が苦手な方は、The Ja-Jakarta ProjectのオフィシャルサイトTaglibsサブプロジェクト(http://www.jajakarta.org/taglibs/)にて、小川環氏が中心になって作成した日本語版が公開されています。そちらを利用するのもよいでしょう。

表1 Standard Taglib Exapmels
項目 説明
General Purpose Tags 基本的なタグ
Conditional Tags 条件選択タグ
Iterator Tags 反復タグ
Import Tags 入力タグ
I18N & Formatting Tags 国際化と書式タグ
XML Tags XMLタグ
SQL Tags SQLタグ
Tag Library Validators タグライブラリ妥当性検査
Miscellaneous そのほかもろもろ

  簡単なWebアプリケーションを設計する

 タグの動作確認を簡単にしたところで、早速簡単なWebアプリケーションを作成してみましょう。本稿では、よくWeb上で見掛ける「アンケート付きクイズページ」のひな形を作ることにしました。まずは設計について簡単な説明をします。作成するJSPファイルは以下の5本です。

(1)画面制御ページ(index.jsp)コマンドを受け付けて対応する画面へforwardする

(2)説明画面(help.jsp)アンケートの説明画面
 
(3)入力画面(input.jsp)アンケートの回答やクイズの解答を入力する画面
 
(4)確認画面(confirm.jsp) 入力された値を確認するための画面
 

(5)終了画面(post.jsp) アンケートの回答とクイズの解答が終わったときに表示される画面
 

 (1)の画面が画面遷移を制御します。画面遷移の順番は、基本的には、(2)から順に(5)へ進むようにします。ページデザインはサンプルなので、できるだけシンプルにしてあります。アンケートの入力結果は、RDB(本稿ではPostgreSQLを使用)へ保存することにします。使用するデータベース名はdbq、テーブル名はtbl_qとします。テーブル設計を表2に示します。

表2 テーブル設計
項目 カラム名 データ型
(PostgreSQL)
データ型
(JDBC)

データ型
(Java)

オプション
ID番号 no INTEGER INTEGER int PRIMARY KEY
e-mail email VARCHAR LONGVARCHAR String NOT NULL
年齢 age INTEGER INTEGER int
クイズの答 answer CHAR(1) CHAR(1) String

  参考までに、PostgreSQLでこのテーブルを作成するSQL文は、リスト1のようになります。

リスト1 テーブル作成のためのSQL文
CREATE TABLE tbl_q (
  no INTEGER NOT NULL,
  email TEXT NOT NULL,
  age INTEGER,
  answer CHAR(1),
  PRIMARY KEY(no)
);

1/2

 INDEX

第10回 JSP開発を効率化するTaglibs
Page1
インストールとサンプルアプケーションの起動
簡単なWebアプリケーションを設計する
  Page2
JSP+JSTLによるWebアプリケーションの実装と配備



「現場に活かすJakarta Project」連載記事一覧

TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH