• 生成freemarker静态页面的工具类


    package cn.bocai.pc.util;

    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.util.Map;

    import freemarker.template.Configuration;
    import freemarker.template.Template;
    import freemarker.template.TemplateException;

    public class GeneratorHtml {
    private Configuration config = null;
    /**
    * 如果目录不存在,则自动创建
    * @param path
    * @return boolean 是否成功
    */
    private boolean creatDirs(String path) {
    File aFile = new File(path);
    if (!aFile.exists()) {
    return aFile.mkdirs();
    } else {
    return true;
    }
    }

    /**
    * 模板生成静态html的方法
    * @param templateFileName(模板文件名)
    * @param templateFilePath(指定模板目录)
    * @param contextMap (用于处理模板的属性Object映射)
    * @param htmlFilePath(指定生成静态html的目录)
    * @param htmlFileName(生成的静态文件名)
    */
    @SuppressWarnings("unchecked")
    public void geneHtmlFile(String templateFileName, String templateFilePath, Map contextMap,
    String htmlFilePath, String htmlFileName) {

    try {
    Template t = this.getFreeMarkerCFG(templateFilePath).getTemplate(templateFileName,"GBK");
    t.setEncoding("UTF-8");
    // 如果根路径存在,则递归创建子目录
    this.creatDirs(htmlFilePath);
    File afile = new File(htmlFilePath + "/" + htmlFileName);
    Writer out = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(afile),"UTF-8"));
    t.process(contextMap, out);
    out.flush();
    out.close();
    } catch (TemplateException e) {
    System.out.print(e.getMessage());
    } catch (IOException e) {
    System.out.print(e.getMessage());
    } catch (Exception e) {
    System.out.print(e.getMessage());
    }
    }

    /**
    * 模板生成静态html的方法
    * @param templateFileName(模板文件名)
    * @param templateFilePath(指定模板目录)
    * @param contextMap (用于处理模板的属性Object映射)
    * @param htmlFilePath(指定生成静态html的目录)
    * @param htmlFileName(生成的静态文件名)
    */
    @SuppressWarnings("unchecked")
    public void geneHtmlFileUTF8(String templateFileName, String templateFilePath, Map contextMap,
    String htmlFilePath, String htmlFileName) {

    try {
    Template t = this.getFreeMarkerCFG(templateFilePath).getTemplate(templateFileName,"UTF-8");
    t.setEncoding("UTF-8");
    // 如果根路径存在,则递归创建子目录
    this.creatDirs(htmlFilePath);
    File afile = new File(htmlFilePath + "/" + htmlFileName);
    Writer out = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(afile),"UTF-8"));
    t.process(contextMap, out);
    out.flush();
    out.close();
    } catch (TemplateException e) {
    System.out.print(e.getMessage());
    } catch (IOException e) {
    System.out.print(e.getMessage());
    } catch (Exception e) {
    System.out.print(e.getMessage());
    }
    }
    /**
    *
    * 获取freemarker的配置,freemarker本身支持classpath,目录或从ServletContext获取.
    *
    * @param templateFilePath
    * 获取模板路径
    * @return Configuration 返回freemaker的配置属性
    * @throws Exception
    */
    private Configuration getFreeMarkerCFG(String templateFilePath)
    throws Exception {
    if (null == this.config) {

    this.config = new Configuration();
    this.config.setDefaultEncoding("UTF-8");
    try {
    this.config.setDirectoryForTemplateLoading(new File(
    templateFilePath));
    } catch (Exception ex) {
    throw ex;
    }
    }
    return this.config;
    }

    public void geneHtmlFileUTF8(String templateFileName, String templateFilePath, Map contextMap,String htmlFilePath) {
    try {
    Template t = this.getFreeMarkerCFG(templateFilePath).getTemplate(templateFileName,"UTF-8");
    t.setEncoding("UTF-8");
    // 如果根路径存在,则递归创建子目录
    this.creatDirs(htmlFilePath);
    File afile = new File(htmlFilePath);
    Writer out = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream(afile),"UTF-8"));
    t.process(contextMap, out);
    out.flush();
    out.close();
    } catch (TemplateException e) {
    System.out.print(e.getMessage());
    } catch (IOException e) {
    System.out.print(e.getMessage());
    } catch (Exception e) {
    System.out.print(e.getMessage());
    }

    }
    }

  • 相关阅读:
    hrbust 1788
    poj2299 ( bit )
    LA3027(并查集)
    hdu1166 (bit)
    hdu1598(并查集)
    cdoj1215 (并查集)
    hdu2643 ( 第二类斯特灵数 )
    hdu3625 ( 第一类斯特灵数 )
    Uva10066
    怎么处理sqlserver2017部署在winowsDocker上时区无法修改成功的方式,并且可以多创建新的容器调用简单的方式直接使用!
  • 原文地址:https://www.cnblogs.com/swite/p/6230698.html
Copyright © 2020-2023  润新知