一个简单的freemark输入输出的案例(一)

时间:2021-03-11 14:48:55

一、 创建FreeMarker模板文件user.ftl

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
   <meta http-equiv=Content-Type content="text/html; charset=utf-8">
     <title>user.ftl</title>
   </head>
   <body>
     ${user.userName}
     ${user.userPassword}
   </body>
 </html>

二、 创建FreeMarker模板文件动态绑定的数据对象类User.java(Sring中pojo)

 User.java
 //..省略包的导入
       public class User{
  private String userName;
 private String userPassword;
 …省略 getter()与setter方法
 }

三、 创建FreeMarker模板文件解析器类FreeMarkertUtil

 FreeMarkertUtil.java
 //省略包的导入
 Public class FreeMarkerUtil{
 //templatePath模板文件存放路径
 //templateName 模板文件名称
 //filename 生成的文件名称
 public static void  analysisTemplate ( String templatePath,String templateName,String fileName,Map<?,?>root ){
 try {
    Configuration config=new Configuration();
   // 设置要解析的模板所在的目录,并加载模板文件
   config.setDirectoryForTemplateLoading(new File(templatePath));
    //设置包装器,并将对象包装为数据模型
    config.setObjectWrapper(new DefaultObjectWrapper());
   //获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致
  //否则会出现乱码
 Template template=config.getTemplate(templateName,“UTF-8”);
    //合并数据模型与模板
    FileOutputStream fos = new FileOutputStream(fileName);
    Writer out = new OutputStreamWriter(fos,“UTF-8”);
        template.process(root, out);
       out.flush();
       out.close();
   } catch (IOException e) {
    e.printStackTrace();
   }catch (TemplateException e) {
    e.printStackTrace();
   }
  }
 } 

四、 创建FreeMarker生成静态页面测试类ClientTest.java

 //..省略包的导入
 public class ClientTest{
  public static void main(String[] args){
   User user=new User();
   user.setUserName("张三");
   user.setUserPassword("123");
   Map<String,Object> root=new HashMap<String, Object>();
   root.put("user", user);
   String templatesPath="D:/DevPlateForm/Eclipse/workspaces/freeMakerTest/src/templates";
   String templateFile="/user.ftl";
   String htmlFile=templatesPath+"/user.html";
     FreeMarkertUtil.analysisTemplate(templatesPath,templateFile,htmlFile,root);
 }
 }