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

复制代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>${username}</h1>
</body>
</html>
复制代码

创建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<String,Object> 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<String,
                        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<String,Object> root = null ;
     @Before
     public  void  setUp() {
         fu = new  FreemarkerUtil();
         root = new  HashMap<String,Object>();
     }
     @Test
     public  void  test01() {
         //1、创建数据模型
         Map<String,Object> root = new  HashMap<String,Object>();
         //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

复制代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>${username}</h1>
</body>
</html>
复制代码

创建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<String,Object> 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<String,
                        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<String,Object> root = null ;
     @Before
     public  void  setUp() {
         fu = new  FreemarkerUtil();
         root = new  HashMap<String,Object>();
     }
     @Test
     public  void  test01() {
         //1、创建数据模型
         Map<String,Object> root = new  HashMap<String,Object>();
         //2、为数据模型添加值
         root.put( "username" , "张三" );
         //3、将数据模型和模板组合的数据输出到控制台
         fu.print( "01.ftl" , root);
         fu.fprint( "02.ftl" , root, "01.html" );
     }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值