zoukankan      html  css  js  c++  java
  • 使用freemarker生成静态页面

    一 说明
    需要在spring mvc项目中加入下列包:
    <dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>${freemarker.version}</version>
    </dependency>
    如果你还想使用freemarker实现表现层,那么还需要导入下列包:
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${org.springframework.version}</version>
    </dependency>
    二 实现工具类

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

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

    /**
    * 文件名:CreateStaticHtml.java
    */
    public class CreateStaticHtml {

    private String encoding;//模板文件编码

    public CreateStaticHtml(){
    this.encoding = "UTF-8";
    }

    public CreateStaticHtml(String encoding){
    this.encoding = encoding;
    }

    /**
    * 创建getTemplate方法用于获取freemarker的模板Template 对象
    *
    * @param cfg
    * @param name
    * @return
    * @throws IOException Template
    */
    private Template getTemplate(Configuration cfg, String name)
    throws IOException {
    cfg.setDefaultEncoding(encoding);
    cfg.setNumberFormat("#");
    return cfg.getTemplate(name);
    }

    /**
    * 创建doWirte方法用于往磁盘上写生成好的文件
    *
    * @param t
    * @param path
    * @param req
    */
    private void doWirte(Template t, String path, Map<String, Object> req) {
    try {
    File staticPage = new File(path);
    System.out.println(staticPage.getAbsolutePath());
    if (!staticPage.exists())
    staticPage.createNewFile();
    Writer wt = new OutputStreamWriter(
    new FileOutputStream(staticPage), encoding);
    t.setEncoding("UTF-8");
    t.process(req, wt);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    /**
    * 此方法用于生成静态页
    *
    * @param args
    * 模板页面参数
    * @param templatePath
    * 模板页面目录
    * @param templateFileName
    * 模板文件名
    * @param staticPagename
    * 生成静态文件名(包含路径)
    * void
    * @author:彭国卿
    * @date:2013-5-17
    */
    public void createStaticPage(Map<String, Object> args, String templatePath,
    String templateFileName, String staticPagename) {
    try {
    Configuration cfg = new Configuration();
    cfg.setDirectoryForTemplateLoading(new File(templatePath));
    Template tIndex = getTemplate(cfg, templateFileName);
    doWirte(tIndex, staticPagename, args);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    public static void main(String[] args) {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("name", "静态页面第一次生成测试");


    new CreateStaticHtml().createStaticPage(map,"E:/penggq-tec/src/main/webapp/WEB-INF/ftls/freemarker/","test.ftl","E:/penggq-tec/src/main/webapp/WEB-INF/ftls/freemarker/test.htm");
    }
    }

    三 使用
    在ftl模板中,使用标签可以将数据替换,但是不能使用jsp标签
    四 其他
    上文生成静态文件的工具类可以自行修改,丰富内容

  • 相关阅读:
    裴蜀定理
    欧几里得算法
    最大公约数
    质数和合数
    整除
    CSP斗地主
    skkyk:点分治
    题解:P2130 狂奔的Wzf
    题解:最大子树和
    博客大换主题祭
  • 原文地址:https://www.cnblogs.com/shiyuelp/p/7069167.html
Copyright © 2011-2022 走看看