普通にVelocityをServletの中で使うときは、WEB-INF/classes/ にテンプレートファイルをおけばいいらしい。
WEB-INF/classes/jp/Hello.class を、次のファイルから作成した場合、
package
jp;
import
java.io.BufferedWriter;import
java.io.IOException;import
java.io.PrintWriter;import
java.io.StringWriter;
import
javax.servlet.ServletException;import
javax.servlet.http.HttpServlet;import
javax.servlet.http.HttpServletRequest;import
javax.servlet.http.HttpServletResponse;
import
org.apache.velocity.Template;import
org.apache.velocity.VelocityContext;import
org.apache.velocity.app.VelocityEngine;
public
class
Hello extends
HttpServlet {
public
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
IOException, ServletException {
response.setContentType("text/html"
);
PrintWriter out = response.getWriter();
out.println("<html><head><title>test</title></head>"
);
out.println("<body bgcolor="
white">"
);
StringWriter buf = new
StringWriter();
BufferedWriter writer = new
BufferedWriter(buf);
try
{
VelocityEngine ve = new
VelocityEngine();
ve.init();
VelocityContext ctx = new
VelocityContext();
Template template = ve.getTemplate("hello.vm"
, "UTF-8"
);
ctx.put("name"
, "Hello"
);
template.merge(ctx, writer);
writer.flush();
out.println("Velocity:"
+ buf.toString());
} catch
(Exception e) {
e.printStackTrace();
} finally
{
writer.close();
}
out.println("</body>"
);
out.println("</html>"
);
}
}
次のようなhello.vmを WEB-INF/classes/ におきます。
Hello.vm
これでサーブレットへアクセスすると、BODY部には次のような出力がされます。
Hello.vm