VelocityテンプレートをGlassFishなアプリから使ってみる

ここのところ、もうちょっと自分のエンジニアとしての立ち位置を変えようと模索してたんだけど、 どうも思うようにはいかず、またこっちに戻ってきたぜ的なw   とは言え、追っかけてきたSpringでもなく、馴染みのあるTomcatでもなくってことで、 キャッチアップ兼ねて、ちょっと手動かしてみます。     ■ 最新版のGlassFishのインストール。     ↓よく分からなかったからFullの方のglassfish-3.1.2.2-unix.shをダウンロード。   が、↓とか言って怒られたのでzipの方のglassfish-3.1.2.2.zipをインストールし直しました。。

$ /bin/sh glassfish-3.1.2.2-unix.sh
This program requires DISPLAY environment variable to be set.
Please re-run after assigning an appropriate value to DISPLAY.

    ■ 開発環境(Eclipse)の整備   EclipseはこないだAWSの勉強会でイジった時のがあるのでソレで。   んで、EclipseGlassFishプラグイン入れるのってこんなやり方あったんだ?って感じ。 http://marketplace.eclipse.org/content/glassfish-java-ee-application-server-plugin-eclipseにアクセスして、 Installボタン押したら出てくるとこをEclipseドラッグアンドドロップ   あとは良しなに任せていく感じ。     で、プロジェクト作ろうと思ったら、GlassFishのアレに、ヤリたそうなのが無い…。   ってことで、Dynamic Web Project。   RuntimeはGlassFishで。   JDK7にしてみます。   無事プロジェクト作り終わって、   出来上がったのみてみると、何やらindex.jspがHelloWorldしてもらいたがってました。   ってことで、プロジェクトを右クリックしてRun On Server的な。   Yay!     ■ Velocityをプロジェクトに導入   次にVelocity落としてきます。   この -dep ってのはdependencyなのが全部入りっぽいのでソレで。   そういえばMaven、、とか思ったけど、取りあえずlibにコピってパス通しやす…。     ■ コーディング   サーブレットもウィザードに従って作ってって、   doGetを↓こんな感じにしてみます。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Velocityテンプレートに渡すValueObject。nameとpriceっていうプロパティ
    Item item = new Item("HogeHoge", 100);

    // itemって名前で入れ物に詰めてやります
    VelocityContext context = new VelocityContext();
    context.put("item", item);

    // テンプレートファイルの場所を指定。
    // デフォルトだとクラスパスのルートになるけど、
    // 以下のようにロードするパスを自分の好きなところに設定出来る。
    VelocityEngine engine = new VelocityEngine();
    engine.addProperty("resource.loader", "file");
    engine.addProperty("file.resource.loader.path", "/Users/eiji/Documents/velocity/template/");
    Template template = engine.getTemplate("Hoge.vm");

    // レスポンスに吐き出すWriter作ってテンプレートとホゲホゲ
    PrintWriter writer = response.getWriter();
    template.merge(context, writer);

    writer.close();
}

  Velocityのテンプレートは↓こんな感じで。

$ pwd
/Users/eiji/Documents/velocity/template
$ cat Hoge.vm
$item.name : $item.price YEN

  そうすると↓こんな感じで出力できましたよ、と。   めでたしめでたし。     ■ 次のアクション   あとは↓この辺読んでイロイロとパラメータ試しつつキャッシュの頻度どうする?とか。 http://velocity.apache.org/engine/devel/developer-guide.html#Velocity_Configuration_Keys_and_Values   あー、モロ静的だけどちょくちょくデザイン変更あるとこはインクルードしたりとかもね〜。 #そんなこと考えてると、CMS的にプレビューみながら画面でボチボチやって、 #Submitボタンおしたらrsyncで各サーバーにバラまくーとかまで作りたくなってきたりも #しないでもないかもね。。

 

最近バッチばかりだったから、久しぶりにWebなコードをガッツリ書けるとイイなぁ。 #って、腐るほど調整ごとしなきゃいけなくなって、それどころじゃなくなったりするのかもだけど…。  

現場で使えるJavaライブラリ
竹添 直樹 島本 多可子 小津 美夕紀 亀井 隆司
翔泳社
売り上げランキング: 135,935