fremarker

引用:http://www.hudong.com/wiki/freemarker

FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。 

  FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 

  FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 

  虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据 

  FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件 

  FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境 

  FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 

  FreeMarker是免费的

freemarker - 入门例子

  Test1.java 

  package freemarker; 

  import java.io.File; 

  import java.io.FileOutputStream; 

  import java.io.OutputStreamWriter; 

  import java.io.Writer; 

  import java.util.HashMap; 

  import java.util.Map; 

  import freemarker.template.Configuration; 

  import freemarker.template.Template; 

  public class Test1 { 

  private Configuration cfg; 

  public Configuration getCfg() { 

  return cfg; 

  } 

  public void init() throws Exception { 

  cfg = new Configuration(); 

  cfg.setDirectoryForTemplateLoading(new File("bin/freemarker")); 

  } 

  public static void main(String[] args) throws Exception { 

  Test1 obj = new Test1(); 

  obj.init(); 

  Map root = new HashMap(); 

  Template t = obj.getCfg().getTemplate("Test1.ftl"); 

  Writer out = new OutputStreamWriter(new FileOutputStream("Test1.html"), "GBK"); 

  t.process(root, out); 

  System.out.println("Successfull................"); 

  } 

  } 

  用到的模版 Test1.ftl 

  <#macro greet person,website> 

  Hello ${person}! Your Website is ${website}. 

  </#macro> 

  <html> 

  <head> 

  <title>Hello World</title> 

  </head> 

  <body> 

  <@greet person="老紫竹" website="www.java2000.net"/> 

  </body> 

  </html> 

  运行结果 

  <html> 

  <head> 

  <title>Hello World</title> 

  </head> 

  <body> 

  Hello 老紫竹! Your Website is <a target="_blank" href="www.java2000.net.">www.java2000.net.</a> 

  </body> 

  </html> 

  注:Test1.ftl的位置在bin/freemarker下

posted @ 2012-11-13 17:10  镇水古月  阅读(315)  评论(0编辑  收藏  举报