FreeMarker

Freemarker快速上手

  官方网站:freemarker.apache.org

  三个操作步骤:

    1、加载模板

    2、创建数据

    3、输出

    

package com.imooc.learn;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;

import freemarker.core.ParseException;
import freemarker.template.Configuration;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateNotFoundException;

public class FreeMarkerOne {

    public static void main(String[] args) throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException, TemplateException {
        /**
         * 学习freemarker
         */
        //创建核心的配置对象
        Configuration config = new Configuration(Configuration.VERSION_2_3_30);
        
        //设置加载的目录
        
        config.setClassForTemplateLoading(FreeMarkerOne.class, "");
        
        //得到模板对象
        Template t = config.getTemplate("freemarker.ftl");
        
        //创建数据
        
        Map data = new HashMap();
        
        data.put("site", "百度");
        data.put("url", "http://www.baidu.com");
        
        //输出结果
        t.process(data, new OutputStreamWriter(System.out));
        

    }

}

package com.imooc.learn;

import java.util.Date;
import java.util.Map;

public class Computer {
    
    private String sn;//序列号
    private String model;//型号
    private int state; //状态 1-在用 2-闲置 3-报废
    
    private String user; //使用人
    
    private Date dop;//采购日期
    
    private Float price; //购买价格
    
    private Map info;//电脑配置信息
    
    
    public Computer() {
        
    }
    
    
    public Computer(String sn, String model, int state, String user, Date dop, Float price, Map info) {
        super();
        this.sn = sn;
        this.model = model;
        this.state = state;
        this.user = user;
        this.dop = dop;
        this.price = price;
        this.info = info;
    }


    public String getSn() {
        return sn;
    }


    public void setSn(String sn) {
        this.sn = sn;
    }


    public String getModel() {
        return model;
    }


    public void setModel(String model) {
        this.model = model;
    }


    public int getState() {
        return state;
    }


    public void setState(int state) {
        this.state = state;
    }


    public String getUser() {
        return user;
    }


    public void setUser(String user) {
        this.user = user;
    }


    public Date getDop() {
        return dop;
    }


    public void setDop(Date dop) {
        this.dop = dop;
    }


    public Float getPrice() {
        return price;
    }


    public void setPrice(Float price) {
        this.price = price;
    }


    public Map getInfo() {
        return info;
    }


    public void setInfo(Map info) {
        this.info = info;
    }
    
    
}
package com.imooc.learn;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import freemarker.core.ParseException;
import freemarker.template.Configuration;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateNotFoundException;

public class FreeMarkerOne {

    public static void main(String[] args) throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException, TemplateException {
        /**
         * 学习freemarker
         */
        //创建核心的配置对象
        Configuration config = new Configuration(Configuration.VERSION_2_3_30);
        
        //设置加载的目录
        
        config.setClassForTemplateLoading(FreeMarkerOne.class, "");
        
        //得到模板对象
        Template t = config.getTemplate("freemarker.ftl");
        
        //创建数据
        
        Map data = new HashMap();
        
        //实例化电脑配置 Map对象
        Map info = new HashMap();
        //电脑cpu
        info.put("cpu", "i5");
        //电脑内存
        info.put("momery", "16G");
        //实例化Computer对象
        Computer c1 = new Computer("857","MacPro",1,"admin",new Date(),13000f,info);
        
        data.put("computer", c1);
        
        data.put("site", "百度");
        data.put("url", "http://www.baidu.com");
        data.put("date", new Date());
        data.put("number", 832456.8907);
        
        
        //输出结果
        t.process(data, new OutputStreamWriter(System.out));
        

    }

}
<#--freemarker取值 -->

${site}-${url}

<#-- ?string 格式化-->
${date?string("yyyy年MM月dd日 HH:mm:ss")}

<#-- 默认值 -->
${author!"未名意志"}

${number?string("0.00") }

<#-- 对象 -->

序号:${computer.sn}
型号:${computer.model}
使用状态:${computer.state}
使用者:${computer.user}
日期:${computer.dop?string("yyyy年MM月dd日")}

价格:${computer.price?string("0.00")}
----------------------------------------

电脑配置
    cpu:${computer.info["cpu"]}
    momery:${computer.info["momery"]}

 分支判断

  

   

<#if computer.state == 1>
    使用状态:在使用
<#elseif computer.state == 2>
    使用状态:闲置
<#elseif computer.state == 3>
          使用状态:废弃        
</#if>

<#-- ?? 是否为空 -->
<#if author??>
    使用者:${computer.user}
</#if>

<#switch computer.state>
    <#case 1>
        使用状态:在使用 <#break>
    <#case 2>
        使用状态:闲置  <#break>
    <#case 3>
        使用状态:废弃  <#break>
    <#default>
        什么都没有 <#break>            
</#switch> 

List 迭代列表

  

 

 Freemarker内建函数

  

             replace                                                                                words?replace("blood","*********")

  

   

   中文学习官网:freemarker.foofun.cn 来学习内建函数

  

原文地址:https://www.cnblogs.com/wuheng-123/p/13737003.html