美文网首页
java Freemarker 模版引擎工具类

java Freemarker 模版引擎工具类

作者: IT祖师爷 | 来源:发表于2022-01-07 11:57 被阅读0次

    package org.fh.util;

    import java.io.BufferedWriter;

    import java.io.File;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.OutputStreamWriter;

    import java.io.PrintWriter;

    import java.io.Writer;

    import java.util.Locale;

    import java.util.Map;

    import freemarker.template.Configuration;

    import freemarker.template.Template;

    import freemarker.template.TemplateException;

    /**

    * 说明:Freemarker 模版引擎类

    * 作者:FH Admin

    * from:fhadmin.cn

    */

    public class Freemarker {

    /**

    * 打印到控制台(测试用)

    *  @param ftlName

    */

    public static void print(String ftlName, Map<String,Object> root, String ftlPath) throws Exception{

    try {

    Template temp = getTemplate(ftlName, ftlPath); //通过Template可以将模板文件输出到相应的流

    temp.process(root, new PrintWriter(System.out));

    } catch (TemplateException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    /**

    * 输出到输出到文件

    * @param ftlName  ftl文件名

    * @param root 传入的map

    * @param outFile 输出后的文件全部路径

    * @param filePath 输出前的文件上部路径

    */

    public static void printFile(String ftlName, Map<String,Object> root, String outFile, String filePath, String ftlPath) throws Exception{

    try {

    File file = new File(PathUtil.getProjectpath() + filePath + outFile);

    if(!file.getParentFile().exists()){ //判断有没有父路径,就是判断文件整个路径是否存在

    file.getParentFile().mkdirs(); //不存在就全部创建

    }

    Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"));

    Template template = getTemplate(ftlName, ftlPath);

    template.process(root, out); //模版输出

    out.flush();

    out.close();

    } catch (TemplateException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    /**

    * 通过文件名加载模版

    * @param ftlName

    */

    public static Template getTemplate(String ftlName, String ftlPath) throws Exception{

    try {

    Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);  //通过Freemaker的Configuration读取相应的ftl

    cfg.setEncoding(Locale.CHINA, "utf-8");

    cfg.setDirectoryForTemplateLoading(new File(PathUtil.getProjectpath()+"/admin/template/ftl/"+ftlPath)); //设定去哪里读取相应的ftl模板文件

    Template temp = cfg.getTemplate(ftlName); //在模板文件目录中找到名称为name的文件

    return temp;

    } catch (IOException e) {

    e.printStackTrace();

    }

    return null;

    }

    }

    相关文章

      网友评论

          本文标题:java Freemarker 模版引擎工具类

          本文链接:https://www.haomeiwen.com/subject/jydjcrtx.html