Java模板引擎之 FreeMarker

摘要: 在Java模板引擎 FreeMarker介绍中,我们已经对freemarker有了一定的了解,这一节是FreeMarker入门教程。下载freemarker,定义模板文件,输出到控制台和文件中

下载freemarker

http://freemarker.sourceforge.net/freemarkerdownload.html

项目文件:freemarker-2.3.19.tar.gz

中文文档:FreeMarker_Manual_zh_CN.pdf

解压后把freemarker.jar加到classpath中即可完成环境的配置

 

定义模板文件

我们创建两个模板文件,一个是纯文本的模板文件,另一个是HTML格式的模板文件,主要是为了说明,freemarker的模板文件可以是任何格式的

01.ftl

你好:${username}

02.ftl

复制代码



Insert title here


${username}

复制代码

创建freemarker工具类

这个类,主要是获取模板定义文件,并根据输入的数据输出到控制台和文件中

package  com.naxsu.freemarker; import  java.io.File; import  java.io.FileWriter; import  java.io.IOException; import  java.io.PrintWriter; import  java.util.Map; import  freemarker.template.Configuration; import  freemarker.template.Template; import  freemarker.template.TemplateException; public  class  FreemarkerUtil {      /**       * 获取模板       * @param name       * @return       */      public  Template getTemplate(String name) {      try  {          //通过Freemaker的Configuration读取相应的ftl          Configuration cfg = new  Configuration();          //设定去哪里读取相应的ftl模板文件          cfg.setClassForTemplateLoading( this .getClass(), "/ftl" );          //在模板文件目录中找到名称为name的文件          Template temp = cfg.getTemplate(name);          return  temp;      } catch  (IOException e) {          e.printStackTrace();      }      return  null ;      }      /**       * 输出到控制台       * @param name 模板文件名       * @param root       */      public  void  print(String name,Map root) {          try  {              //通过Template可以将模板文件输出到相应的流          Template temp = this .getTemplate(name);          temp.process(root, new  PrintWriter(System.out));      } catch  (TemplateException e) {          e.printStackTrace();      } catch  (IOException e) {          e.printStackTrace();      }      }      /**       * 输出到文件       * @param name       * @param root       * @param outFile       */      public  void  fprint(String name,Map                         Object> root,String outFile) {      FileWriter out = null ;      try  {              //通过一个文件输出流,就可以写到相应的文件中          out = new  FileWriter(                        new  File( "E:\\freemarker\\ftl\\" +outFile));          Template temp = this .getTemplate(name);          temp.process(root, out);      } catch  (IOException e) {          e.printStackTrace();      } catch  (TemplateException e) {          e.printStackTrace();      } finally  {          try  {          if (out!= null ) out.close();          } catch  (IOException e) {          e.printStackTrace();          }      }      } }

  模拟数据,进行测试

public  class  TestFreemarker {      FreemarkerUtil fu;      Map root = null ;      @Before      public  void  setUp() {          fu = new  FreemarkerUtil();          root = new  HashMap();      }      @Test      public  void  test01() {          //1、创建数据模型          Map root = new  HashMap();          //2、为数据模型添加值          root.put( "username" , "张三" );          //3、将数据模型和模板组合的数据输出到控制台          fu.print( "01.ftl" , root);          fu.fprint( "02.ftl" , root, "01.html" );      } }

下载freemarker

http://freemarker.sourceforge.net/freemarkerdownload.html

项目文件:freemarker-2.3.19.tar.gz

中文文档:FreeMarker_Manual_zh_CN.pdf

解压后把freemarker.jar加到classpath中即可完成环境的配置

 

定义模板文件

我们创建两个模板文件,一个是纯文本的模板文件,另一个是HTML格式的模板文件,主要是为了说明,freemarker的模板文件可以是任何格式的

01.ftl

你好:${username}

02.ftl

复制代码



Insert title here


${username}

复制代码

创建freemarker工具类

这个类,主要是获取模板定义文件,并根据输入的数据输出到控制台和文件中

package  com.naxsu.freemarker; import  java.io.File; import  java.io.FileWriter; import  java.io.IOException; import  java.io.PrintWriter; import  java.util.Map; import  freemarker.template.Configuration; import  freemarker.template.Template; import  freemarker.template.TemplateException; public  class  FreemarkerUtil {      /**       * 获取模板       * @param name       * @return       */      public  Template getTemplate(String name) {      try  {          //通过Freemaker的Configuration读取相应的ftl          Configuration cfg = new  Configuration();          //设定去哪里读取相应的ftl模板文件          cfg.setClassForTemplateLoading( this .getClass(), "/ftl" );          //在模板文件目录中找到名称为name的文件          Template temp = cfg.getTemplate(name);          return  temp;      } catch  (IOException e) {          e.printStackTrace();      }      return  null ;      }      /**       * 输出到控制台       * @param name 模板文件名       * @param root       */      public  void  print(String name,Map root) {          try  {              //通过Template可以将模板文件输出到相应的流          Template temp = this .getTemplate(name);          temp.process(root, new  PrintWriter(System.out));      } catch  (TemplateException e) {          e.printStackTrace();      } catch  (IOException e) {          e.printStackTrace();      }      }      /**       * 输出到文件       * @param name       * @param root       * @param outFile       */      public  void  fprint(String name,Map                         Object> root,String outFile) {      FileWriter out = null ;      try  {              //通过一个文件输出流,就可以写到相应的文件中          out = new  FileWriter(                        new  File( "E:\\freemarker\\ftl\\" +outFile));          Template temp = this .getTemplate(name);          temp.process(root, out);      } catch  (IOException e) {          e.printStackTrace();      } catch  (TemplateException e) {          e.printStackTrace();      } finally  {          try  {          if (out!= null ) out.close();          } catch  (IOException e) {          e.printStackTrace();          }      }      } }

  模拟数据,进行测试

public  class  TestFreemarker {      FreemarkerUtil fu;      Map root = null ;      @Before      public  void  setUp() {          fu = new  FreemarkerUtil();          root = new  HashMap();      }      @Test      public  void  test01() {          //1、创建数据模型          Map root = new  HashMap();          //2、为数据模型添加值          root.put( "username" , "张三" );          //3、将数据模型和模板组合的数据输出到控制台          fu.print( "01.ftl" , root);          fu.fprint( "02.ftl" , root, "01.html" );      } }


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部