作成 2003/5/7
実験環境
Velocityは汎用テンプレートエンジンです。 汎用というのは、Web、HTML、XMLなどに限らずテキストなら何でも対象になるということです。 テンプレートエンジンというのは、テンプレートを用意しておいて、 そこに値を入れていく仕組みです。
テンプレート | 作成文書 | |
---|---|---|
FAX送信票 送信先 送信元 要件 | → |
FAX送信票 送信先 わたし 送信元 あなた 要件 すき |
サーブレットにHTMLを書くのはあまりに酷いです。
out.println("<html>"); out.println("<body>"); out.println(message); out.println("</body>"); out.println("</html>");
JSPでHTML内にプログラムを埋め込むことで、 大分楽になりました。
<html> <body> <%=request.getAttribute("message")%> </body> </html>
カスタムタグを使えば、もっとキレイです。でも見にくいでしょ?
<html> <body> <bean:write name="mesasge"/> </body> </html>
というわけでVelocityです。
<html> <body> $message </body> </html>
もっと詳しく知りたい人はこちら
Jakarta公式サイト
http://jakarta.apache.org/velocity/
Jakartaプロジェクト徹底攻略 テンプレートエンジンVelocityでいこう
http://www.gihyo.co.jp/books/syoseki.php/4-7741-1561-4
Ja-Jakarta翻訳
http://www.jajakarta.org/velocity/
プログラマーのための動的ページ作成法
http://kwatch.tripod.co.jp/web/dynamic-page.html
公式サイトのURLから最新版のアーカイブをダウンロードします。 ここでは、1.3.1を使いました。
アーカイブを展開し、適当なディレクトリに配置します。 Velocityを配置したディレクトリを以下%VEL_HOME%と記述します。
まず、%VEL_HOME%/buildディレクトリでant jar(jarターゲット)を行い、 binディレクトリにvelocityのjarを構築します (ルートにも同じものが元々ありますが)。
いくつかサンプルを実行してみましょう。
example.batのクラスパスの通し方がちょっとオシャレですね。 (Velocityと関係ないところに感心)
set VELCP=. for %%i in (..\..\bin\*.jar) do set VELCP=%VELCP%;%%i for %%i in (..\..\build\lib\*.jar) do set VELCP=%VELCP%;%%iクラスファイルがないので、コンパイルします。 クラスパスを通すのがめんどくさいので、一度exampleを実行して、 設定された%VELCP%を使ってコンパイルすると楽でしょう (やり方間違ってる?)。
javac -classpath %VELCP% *.java
example.batを起動すると、サンプルが実行できます。
FORMを使ったWebアプリケーションの例です。 (単一のサーブレットのサンプルはservlet_example1など)
%VEL_HOME%binでANTを使ってビルドします。
ant example(exampleターゲット)
作成された、forumdemo.warをデプロイ(TOMCATならwebappにコピー)します。
anakia/buildディレクトリでantを実行します。
anakiaのdocディレクトリにHTMLが作成されます。
参考文献とサンプルを参考にプログラムを作ってみます。
ここで作成するのは、簡単なVelocityアプリケーションです。 Velocityは汎用テンプレートエンジンなので、 mainからはじまるアプリケーションとして実行できます。
hello.vmはVelocityのテンプレートファイルです。 VMファイルにはVTL(Velocity Template Language:Velocityテンプレート言語)を記述できます。JSPのスクリプトレットのようなもんですね。 HelloVel.javaで必要な情報をVelocityコンテキストにセットして、 VMファイルとマージして標準出力に出力しています。.javaと.vmを同じディレクトリにおいてコンパイル、HelloVelを実行します。 以下のJARをクラスパスに含める必要があります。
画面、実行結果
お次はサーブレットです。
loadConfiguration()でVelocity#init(Properties)な設定をして、 handleRequest()で、Velocityコンテキストに値を設定して、 Templateを返しています。 サンプルまま、工夫もありませんが。
実行する場合は、Webアプリケーションに配置します。 VMファイルはWebアプリケーションのルートから読むようにしています。 上のサンプルと同じJARをクラスパス(WEB-INF/libとか)に追加する必要があります。
画面、ブラウザから実行
WebアプリケーションのViewの選択肢の1つとしてVelocityは面白いかもしれません。 VTLは簡単そうだし。 ただ、J2EEの標準はJSPのELになると思われるので、今後どうなるか? ツールとしてのVelocityも興味いですね。 HTMLの作成や、DDファイルの作成に、、、。 しかし、いろいろ似た目的のツールがある中で、 どれを選ぶべきか。う〜む。