Archive for the ‘Velocity’ Category

  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!
    
  2. Hello, NVelocity World!

    Posted on 2月 12th, 2012 by cx20

    NVelocity

    NVelocity は Java 用のテンプレートエンジン「Velocity」の .NET 実装である。

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

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

    ソースコード(C#)

    using System;
    using System.IO;
    using System.Diagnostics;
    using Commons.Collections;
    using NVelocity;
    using NVelocity.App;
    using NVelocity.Context;
     
    public partial class _Hello : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            VelocityEngine velocity = new VelocityEngine();
            VelocityContext context = new VelocityContext();
            StringWriter sw = new StringWriter();
            try
            {
                String properties = Server.MapPath("nvelocity.properties");
                velocity.Init(properties);
                Template template = velocity.GetTemplate("hello.vm");
                context.Put("message", "NVelocity");
                template.Merge(context, sw);
                Response.Write(sw.GetStringBuilder().ToString());
            }
            catch( Exception ex )
            {
                Debug.WriteLine("Exception: " + ex.Message);
            }
        }
    }

    実行方法

    ディレクトリ構成
    /Hello               … 公開用フォルダ
        /Hello.aspx
        /Hello.aspx.cs
        /nvelocity.properties … NVelocity 設定ファイル
        /Web.config      … ASP.NET 構成ファイル
        /bin
             /NVelocity.dll
        /templates      … テンプレート配置場所
              /hello.vm
     
    1. テンプレートの配置
       templates
    2. nvelocity.properties の記載
    resource.loader = file
    file.resource.loader.class = NVelocity.Runtime.Resource.Loader.FileResourceLoader
    file.resource.loader.path = C:\home\edu\vs2010\vc10#\Hello\templates
    file.resource.loader.cache = true
    file.resource.loader.modificationCheckInterval = 2
    3. ブラウザで表示
       http://localhost/Hello/Hello.aspx

    実行結果

    Hello, NVelocity World!