Java Velocity on CentOS

お友達に触発されて Velocity を使ってみた。Java 自体久しぶり。


↑これを、ほぼそのまま真似。
とりあえず、 VTL が試せればよいので tomcat 無しのスタンドアローンで作成。
Eclipse も使わず人力で設定。

一応、tomcatyum tomcat5 velociy & /etc/init.d/tomcat5.sh start で動かしてはあるけど、また今度。

ファイル配置

以下のようなフォルダ構成で OK。スタンドアローンなので何処に置いても良い。
(tomcat なら /usr/share/tomcat/webapps/ 以下で WEB-INF とかにばら撒くんだろうけど)

- HelloVelocity
   |- velocity.properties
   |- sample/HelloWorld.java
   |- templates/hello.vm
   |- src/beans/Hello.java
   |- lib
       |- avalon-logkit-2.1.jar
       |- commons-lang-2.4.jar
       |- velocity-1.6.4.jar
       |- commons-collections-3.2.1.jar
       |- oro-2.0.8.jar

lib 以下の jar ファイルは velocity-1.6.4.tar.gz の中に入ってたのを、コピってきた。

コードの肝

sample/HelloWorld.java

Hello hello = new Hello();
hello.setName("Hello World!!"); 
hello.setList(Arrays.asList("h", "e", "l", "l", "o"));
templates/hello.vm 
$hello.name
---------------------
#foreach($s in $hello.list)
    リスト:$s
#end
---------------------

結果

Hello World!!
---------------------
    リスト:h
    リスト:e
    リスト:l
    リスト:l
    リスト:o
---------------------

動いた。意外と簡単。

実行スクリプト

#!/bin/sh

CLASSPATH=.:src:lib
for f in $(\ls lib/*.jar)
    do
        CLASSPATH=$CLASSPATH:$f
    done
export CLASSPATH

# javac sample/HelloWorld.java
java sample/HelloWorld

今回のはまりどころ

CLASSPATH に . を含めるのを忘れて少し手間取った。

大昔にもまったく同じ嵌りかたしたの思い出した。。。学習能力0すぎる。。

velocity で携帯サイト

とりあえず、velocity.properties に

input.encoding=Shift_JIS
output.encoding=Shift_JIS
default.contentType=application/xhtml+xml; charset=Shift_JIS

を追加しとくと良いと思うYO!

でも、encoding=UTF-8 じゃないと怪しい動きする端末(SBの一部とか)
もあるので、注意が必要だYO!