1、新建一个java工程,将velocity的jar包添加进编译路径,包括velocity-1.7.jar和lib中的所有jar包,这里给出下载链接:http://velocity.apache.org/download.cgi。
2、给出模板文件:example.vm.
- <?xml version="1.0" encoding="UTF-8"?>
- <list>
- #foreach( $name in $list )
- $name is fun!
- #end
- </list>
3、给出我的测试类,将模板文件和类文件放在一个目录下。
- import java.io.BufferedWriter;
- import java.io.OutputStreamWriter;
- import java.util.ArrayList;
- import org.apache.velocity.Template;
- import org.apache.velocity.VelocityContext;
- import org.apache.velocity.app.Velocity;
- import org.apache.velocity.exception.ParseErrorException;
- import org.apache.velocity.exception.ResourceNotFoundException;
- public class HelloVeloctiy {
- public HelloVeloctiy(String templateFile) {
- try {
- Velocity.init();
- /*
- * Make a context object and populate with the data. This is where
- * the Velocity engine gets the data to resolve the references (ex.
- * $list) in the template
- */
- VelocityContext context = new VelocityContext();
- context.put("list", getNames());
- /*
- * get the Template object. This is the parsed version of your
- * template input file. Note that getTemplate() can throw
- * ResourceNotFoundException : if it doesn't find the template
- * ParseErrorException : if there is something wrong with the VTL
- * Exception : if something else goes wrong (this is generally
- * indicative of as serious problem...)
- */
- Template template = null;
- try {
- template = Velocity.getTemplate(templateFile);
- } catch (ResourceNotFoundException rnfe) {
- System.out.println("Example : error : cannot find template "
- + templateFile);
- } catch (ParseErrorException pee) {
- System.out.println("Example : Syntax error in template "
- + templateFile + ":" + pee);
- }
- /*
- * Now have the template engine process your template using the data
- * placed into the context. Think of it as a 'merge' of the template
- * and the data to produce the output stream.
- */
- BufferedWriter writer = writer = new BufferedWriter(
- new OutputStreamWriter(System.out));
- if (template != null)
- template.merge(context, writer);
- /*
- * flush and cleanup
- */
- writer.flush();
- writer.close();
- } catch (Exception e) {
- System.out.println(e);
- }
- }
- public ArrayList getNames()
- {
- ArrayList list = new ArrayList();
- list.add("HelloVelocity 1");
- list.add("HelloVelocity 2");
- list.add("HelloVelocity 3");
- list.add("HelloVelocity 4");
- return list;
- }
- public static void main(String[] args)
- {
- HelloVeloctiy t = new HelloVeloctiy("example.vm");
- }
- }
4、编译执行,看看输出是不是很简单:
- <?xml version="1.0" encoding="UTF-8"?>
- <list>
- HelloVelocity 1 is fun!
- HelloVelocity 2 is fun!
- HelloVelocity 3 is fun!
- HelloVelocity 4 is fun!
- </list>
5、关于VTL更多的信息,可以查阅相关资料。
原文转自:http://blog.csdn.net/huangyunzeng2008/article/details/7031712