zoukankan      html  css  js  c++  java
  • Freemarker01

    1 如何使用freemarker

      1.1 导包

        freemarker-2.3.19.jar

      1.2 创建一个ftl文件作为模板

      1.3 创建一个方法来将ftl模板和数据组合起来

    2 利用maven实现freemarker编程

      2.1 创建一个maven项目

        

      2.2 利用maven导入freemarker包

        

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>cn.xiangxu</groupId>
      <artifactId>warriorTest</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>war</packaging>
      <dependencies>
          <dependency>
              <groupId>org.freemarker</groupId>
              <artifactId>freemarker</artifactId>
              <version>2.3.19</version>
          </dependency>
      </dependencies>
    </project>
    pom.xml

      2.3 创建用于组装freemarker模板和数据的方法

        2.3.1 创建freemarker配置实例并指定ftl模板文件的位置

        2.3.2 创建数据模型并向数据模型中添加数据

        2.3.3 利用freemarker对象加载模板文件

        2.3.4 显示生成的数据

        2.3.5 关闭输出流

    public static void test01() throws Exception {
            Configuration cfg = new Configuration();  // 创建freemarker配置实例
            cfg.setDirectoryForTemplateLoading(new File("template")); // 指定配置文件的路径   // 包含ftl文件的文件夹在项目根目录下时的写法(使用相对路径)
    //        cfg.setDirectoryForTemplateLoading(new File("D://template")); // 使用绝对路径
    //        cfg.setClassForTemplateLoading(this.getClass(), "/template");//在resource目录下的写法类路径(这种方法在静态方法中不可用)
    //        1、创建freemarker配置实例并指定ftl模板文件的位置
            
            Map root = new HashMap(); // 创建数据模型
            root.put("name", "Zeus"); // 向数据模型中添加数据
    //        2、创建数据模型并向数据模型中添加数据
            
            Template tl = cfg.getTemplate("a.ftl");
    //        3、利用freemarker对象加载模板文件
            
            Writer out = new OutputStreamWriter(System.out);// 输出控制 // 输出流到控制台(输出流到文件、输出流到socket怎么处理)
            tl.process(root, out); // 将模板和数据组合的结果输出指定的输出位置
    //        4、显示生成的数据
            
            out.flush(); 
            out.close();
    //        5、关闭输出流
        }

      2.4 编写ftl模板文件

    Hello ${name}
    Welcom to the city of dazu

      2.5 在main方法中调用

    package cn.xiangxu.freemarker;
    
    import java.io.File;
    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;
    
    public class TestFreemarker {
        
        public static void main(String[] args) throws Exception {
            test01();
        }
        
        public static void test01() throws Exception {
            Configuration cfg = new Configuration();  // 创建freemarker配置实例
            cfg.setDirectoryForTemplateLoading(new File("template")); // 指定配置文件的路径   // 包含ftl文件的文件夹在项目根目录下时的写法(使用相对路径)
    //        cfg.setDirectoryForTemplateLoading(new File("D://template")); // 使用绝对路径
    //        cfg.setClassForTemplateLoading(this.getClass(), "/template");//在resource目录下的写法类路径(这种方法在静态方法中不可用)
    //        1、创建freemarker配置实例并指定ftl模板文件的位置
            
            Map root = new HashMap(); // 创建数据模型
            root.put("name", "Zeus"); // 向数据模型中添加数据
    //        2、创建数据模型并向数据模型中添加数据
            
            Template tl = cfg.getTemplate("a.ftl");
    //        3、利用freemarker对象加载模板文件
            
            Writer out = new OutputStreamWriter(System.out);// 输出控制 // 输出流到控制台(输出流到文件、输出流到socket怎么处理)
            tl.process(root, out); // 将模板和数据组合的结果输出指定的输出位置
    //        4、显示生成的数据
            
            out.flush(); 
            out.close();
    //        5、关闭输出流
        }
    }

      2.6 控制台效果

        

      2.7 项目文件目录

        

      2.8 待优化点

        freemarker的相关指令语法详解

        怎么讲组合后的内容存储到一个文件中

        利用freemarker实现sql语句的动态拼接

        待更新......

        2017年8月29日22:08:54

  • 相关阅读:
    Android后台保活实践总结:即时通讯应用无法根治的“顽疾”
    新手入门:史上最全Web端即时通讯技术原理详解
    【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
    【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战
    【原创】NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示
    【原创】NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示
    爱奇艺技术分享:轻松诙谐,讲解视频编解码技术的过去、现在和将来
    网络编程懒人入门(十二):快速读懂Http/3协议,一篇就够!
    美团点评的移动端网络优化实践:大幅提升连接成功率、速度等
    IM开发宝典:史上最全,微信各种功能参数和逻辑规则资料汇总
  • 原文地址:https://www.cnblogs.com/NeverCtrl-C/p/7450532.html
Copyright © 2011-2022 走看看