zoukankan      html  css  js  c++  java
  • Atitit freemarker模板总结 D:\workspace\springboothelloword\src\com\attilax\util\TempleteFreemarkerUtil.

    Atitit freemarker模板总结

     

    D:\workspace\springboothelloword\src\com\attilax\util\TempleteFreemarkerUtil.java

     

    package com.attilax.util;

     

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.OutputStreamWriter;

    import java.io.StringWriter;

    import java.util.Map;

     

    import org.apache.commons.io.FileUtils;

     

    import com.google.common.collect.Maps;

     

    import freemarker.template.Configuration;

    import freemarker.template.DefaultObjectWrapper;

    import freemarker.template.Template;

    import freemarker.template.TemplateException;

     

    public class TempleteFreemarkerUtil {

     

    public static void main(String[] args) throws IOException, TemplateException {

    String sql = "select distinst*from   ${name}  .";

    Map m_varRoot = Maps.newLinkedHashMap();

    m_varRoot.put("name", "tabled");

     

    String analysisTemplate = parseTmplt(sql, m_varRoot);

    System.out.println(analysisTemplate);

    }

     

    public static String parseTmplt(String tmplt, Map varRoot) throws IOException, TemplateException {

    String tmplt_dir = "D:\\000000\\";

    // new File() string byte转file是不存在的,,因为ipputstream读取file是个native方法

    java.util.Random r = new java.util.Random();

    String tmpleteId = String.valueOf(r.nextInt());

    File file = new File(tmplt_dir + tmpleteId);

     

    FileUtils.writeStringToFile(file, tmplt);

     

    String analysisTemplate = analysisTemplate(tmplt_dir, tmpleteId, "gbk", varRoot);

    return analysisTemplate;

    }

     

    /**

     * @param templateName

     *            模板文件名称

     * @param templateEncoding

     *            模板文件的编码方式

     * @param root

     *            数据模型根对象

     * @return

     * @throws IOException

     * @throws TemplateException

     */

    public static String analysisTemplate(String pathname, String templateName, String templateEncoding, Map<?, ?> root)

    throws IOException, TemplateException {

     

    /** 创建Configuration对象 */

    Configuration config = new Configuration();

    /** 指定模板路径 */

    // = "templates";

    File file = new File(pathname);

    /** 设置要解析的模板所在的目录,并加载模板文件 */

    config.setDirectoryForTemplateLoading(file);

    /** 设置包装器,并将对象包装为数据模型 */

    config.setObjectWrapper(new DefaultObjectWrapper());

    config.setStrictSyntaxMode(false);

     

    /** 获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致 */

    Template template = config.getTemplate(templateName, templateEncoding);

    /** 合并数据模型与模板 */

    StringWriter stringWriter = new StringWriter();

    template.process(root, stringWriter);

    stringWriter.close();

    return stringWriter.toString();

     

    }

     

    }

     

     

    D:\0workspace\AtiPlatf_cms\src\com\attilax\rails\FreeMarkertUtil.java

     

     

    package templete;

     

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.OutputStreamWriter;

    import java.io.StringWriter;

    import java.util.Map;

     

    import org.apache.commons.io.FileUtils;

     

    import com.google.common.collect.Maps;

     

    import freemarker.template.Configuration;

    import freemarker.template.DefaultObjectWrapper;

    import freemarker.template.Template;

    import freemarker.template.TemplateException;

     

    public class freemarkerDemo {

     

    public static void main(String[] args) throws IOException, TemplateException {

    String sql="select distinst*from   ${name}  .";

    // new File()  string byte转file是不存在的,,因为ipputstream读取file是个native方法

    File file = new File("D:\\000000\\sql2.txt");

     

    FileUtils.writeStringToFile(file, sql);

    Map m=Maps.newConcurrentMap();m.put("name", "tabled");

    System.out.println(analysisTemplate("D:\\000000\\","sql2.txt","gbk",m));

    }

     

    /** @param templateName 模板文件名称

     * @param templateEncoding 模板文件的编码方式

     * @param root 数据模型根对象

     * @return 

     * @throws IOException

     * @throws TemplateException */

    public static String analysisTemplate(String pathname, String templateName, String templateEncoding, Map<?, ?> root ) throws IOException, TemplateException {

     

    /** 创建Configuration对象 */

    Configuration config = new Configuration();

    /** 指定模板路径 */

    // = "templates";

    File file = new File(pathname);

    /** 设置要解析的模板所在的目录,并加载模板文件 */

    config.setDirectoryForTemplateLoading(file);

    /** 设置包装器,并将对象包装为数据模型 */

    config.setObjectWrapper(new DefaultObjectWrapper());

    config.setStrictSyntaxMode(false);

     

     

    /** 获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致 */

    Template template = config.getTemplate(templateName, templateEncoding);

    /** 合并数据模型与模板 */

      StringWriter stringWriter = new StringWriter();   

    template.process(root,stringWriter);

    stringWriter.close();

    return stringWriter.toString();

     

     

    }

     

    }

     

  • 相关阅读:
    async await 死锁简单分析
    如何在Linux上安装Git Server
    Winform业务层如何调用UI层的代码
    Git是怎么Ignore文件的?
    使用委托把方法写得更容易维护
    我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 Internet 上用于确保您通信的安全性。
    【腾讯bugly干货】QQ空间直播秒开优化实践
    【腾讯bugly干货分享】Android自绘动画实现与优化实战——以Tencent OS录音机波形动
    【腾许Bugly干货分享】“HTTPS”安全在哪里?
    【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?
  • 原文地址:https://www.cnblogs.com/attilax/p/15197438.html
Copyright © 2011-2022 走看看