Velocity を使ってみよう(前編)

Velocity は Java のためのテンプレートエンジンです。「テンプレートエンジンって何ぞや ?」という方のために、わかりやすい例を挙げてみましょう。

みなさん、年賀状をソフトで作成するときのことを想像してください。住所録を作りますよね。それをソフトが用意しているテンプレートに当てはめることによって宛名印刷ができます。それをやってくれるツールがテンプレートエンジンです。

Velocity の入手

まぁ何はなくとも Velocity とやらを手に入れてこないと使えませんので、Apache Velocity Project のサイトからダウンロードします。当面は Engine だけあれば十分です。最新版は 1.7 です。

ダウンロードした zip ファイルの中に velocity-1.7/velocity-1.7-dep.jar*1 というファイルがありますので、これを適当なところに置いておきます。

Eclipse に Velocity UI をインストールする

Eclipse で Velocity を利用した開発を行う際に便利ですので導入しておきましょう。以下のサイトを Available Software Sites に登録します。
http://veloedit.sourceforge.net/updates/
後は [Help] → [Install New Software...] からサイトを選んでインストールするだけです。

後は Velocity を使いたいプロジェクトに先ほどの velocity-1.7-dep.jar を登録するだけで Velocity が使えます。

表示用 Bean の作成

さて、ソースコードの一つもなしに終わらせるわけにはいかないので、ここらへんでそろそろソースコードを。まずはテンプレートに差し込むデータ用の Bean を作成します。

package jp.mydns.akanekodou.bean;

public class Product {
    private int id;
    private String name;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

Web アプリケーションを作るときの Java Beans と同じ要領です。

テンプレートの作成

View に当たる部分と言えます。これは .vm ファイル(Velocity Macro)になります。プロジェクト内に template というフォルダを作成してそこに products.vm というファイル名で保存してください。

#foreach ($product in $list)
$product.id : $product.name
#end

今回は雰囲気をつかんでもらうために単純なものにしました。#foreach は vm ファイルで使えるループです。リストを受け取って、要素を一つずつ取り出します。$product には先ほど作成した Product クラスの要素が入っています*2ので .id や .name でプロパティを呼び出します。

後編でいよいよプログラムの本体を作ります。データベース(MySQL)と連携しますので JDBC ドライバの登録を忘れずに。

*1:Velocity 本体に、依存関係にあるパッケージを含めたものです。これ一つで最低限は動作します。

*2:というか、そうなるように、$list には List<Product> 型の値が入るように後で設計します。