Archive for 2月 19th, 2012

  1. Hello, Velocity World!

    Posted on 2月 19th, 2012 by cx20

    Velocity

    Velocity は Java 用のテンプレートエンジンである。英語で「速さ」を意味する。
    テンプレートファイルは VTL(Velocity Template Language)と呼ばれるテンプレート言語が用いられる。

    ソースコード(テンプレート)

    <html>
      <head>
        <title>Hello, World!</title>
      </head>
      <body>
        <p>Hello, $message World!</p>
      </body>
    </html>

    ソースコード(Java)

    import org.apache.velocity.Template;
    import org.apache.velocity.servlet.VelocityServlet;
    import org.apache.velocity.app.Velocity;
    import org.apache.velocity.context.Context;
    import javax.servlet.http.*;
     
    public class Hello extends VelocityServlet {
     
        public Template handleRequest( HttpServletRequest request,
                                       HttpServletResponse response,
                                       Context context ) {
     
            Template template = null;
     
            try {
                context.put("message", "Velocity");
                template = Velocity.getTemplate("hello.vm");
            } catch( Exception e ) {
                System.err.println("Exception: " + e.getMessage());
            }
     
            return template;
        }
    }

    実行方法

    ディレクトリ構成
    /hello               … 公開用フォルダ
        /WEB-INF         … アプリケーション設定ファイル配置場所
            /classes     … クラスファイル配置場所
            /templates   … テンプレート配置場所
     
    1. モジュールのコンパイル
       javac -cp $CATALINA_HOME/lib/velocity-1.7.jar:$CATALINA_HOME/lib/servlet-api.jar:. Hello.java
    2. モジュールの配置
       WEB-INF/classes
    3. テンプレートの配置
       WEB-INF/templates
    4. WEB-INF/velocity.properties の記載
    resource.loader = file
    file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
    file.resource.loader.path = /usr/local/tomcat/current/webapps/hello/WEB-INF/templates
    file.resource.loader.cache = true
    file.resource.loader.modificationCheckInterval = 2
    5. WEB-INF/web.xml の記載
    <?xml version="1.0"?>
    <web-app>
      <servlet>
        <servlet-name>Hello</servlet-name>
        <servlet-class>Hello</servlet-class>
        <init-param>
          <param-name>properties</param-name>
          <param-value>/WEB-INF/velocity.properties</param-value>
        </init-param>
      </servlet>
      <servlet-mapping>
        <servlet-name>Hello</servlet-name>
        <url-pattern>/servlet/Hello</url-pattern>
      </servlet-mapping>
    </web-app>
    6. ブラウザで表示
       http://localhost:8080/hello/servlet/Hello

    実行結果

    Hello, Velocity World!