• Freemarker与普通java


    package com.sxt.test.freemarker;
    
    import java.io.File;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Random;
    
    import freemarker.template.Configuration;
    import freemarker.template.Template;
    
    public class Test1 {
    public static void main(String[] args) throws Exception {
    //创建Freemarker配置实例
    Configuration cfg = new Configuration();
    cfg.setDirectoryForTemplateLoading(new File("templates")); 
    
    //创建数据模型
    Map<String, Object> root = new HashMap<String, Object>();
    root.put("user", "测试用户");
    
    //javabean可以自动转化!类似于我们前面学习的EL表达式!
    User u = new User();
    u.setUname("小红");
    root.put("user1", u);
    User u2 = new User("小明",new Address("中国","北京"));
    root.put("user2", u2);
    
    //map/list容器
    List<Address> list = new ArrayList<Address>();
    list.add(new Address("中国","北京"));
    list.add(new Address("中国","上海"));
    list.add(new Address("美国","纽约")); 
    root.put("lst", list);
    
    //普通标量??
    root.put("num0", 18);
    root.put("b2", true);
    root.put("date1", new Date());
    root.put("random", new Random().nextInt(100));
    root.put("htm2", "<b>粗体</b>");
    
    //加载模板文件
    Template t1 = cfg.getTemplate("a.ftl");
    
    //显示生成的数据
    Writer out = new OutputStreamWriter(System.out);
    t1.process(root, out);
    out.flush();
    
    
    }
    }

    2./templates/a.ftl

    普通标量测试:
    <#if num0==18>18岁,成年了!</#if><#--数字 -->
    <#if user=="测试用户">欢迎你</#if><#--字符串-->
    <#if b2>b2是true!</#if>  <#--布尔值-->
    ${date1?string("yyyy-MM-dd HH:mm:ss")}
    <#-- ${date1.toString()}????时间怎么处理??  -->
    -----------------------------------------------
    普通变量和javabean测试:
    你好啊,${user},${user1.uname},今天你的精神不错!
    ${user2.uname}来自${user2.addr.city},那里好玩吗?
    -----------------------------------------------
    List数据测试:
    ${lst[0].city},
    ${lst[1].city},
    ${lst[2].city},
    ------------------------------------------------
    内建函数:
    ${htm2?html}
    -------------------------------------------------
    测试空值处理:
    <#-- ${sss} 没有定义这个变量,会报异常! -->
    ${sss!} <#--没有定义这个变量,默认值是空字符串! -->
    ${sss!"abc"} <#--没有定义这个变量,默认值是字符串abc! -->
    ------------------------------------------------
    if语句测试:
    ${user}是<#if user=="老师">我们的老师</#if>
    ------------------------------------------------
    if else 语句测试:
    <#if num0 gt 18>  <#--不是使用>,大部分时候,freemarker会把>解释成标签结束! -->
        及格!
    <#else>
        不及格!
    </#if>
    ---------------------------------------------------
    if else if else语句测试:
    <#if random gte 90>
        优秀!
    <#elseif random gte 80>
        良好!
    <#else>
        一般!    
    </#if>
    ----------------------------------------------------
    测试list指令:
    <#list lst as dizhi >
        <b>dizhi</b> <br/>
    </#list>
    ----------------------------------------------------
    测试include指令:
    <#include "included.txt" />
    ----------------------------------------------------
    <#macro m1>   <#--定义指令m1 -->
        <b>aaabbbccc</b>
        <b>dddeeefff</b>
    </#macro>
    
    <@m1 /><@m1 />  <#--调用上面的宏指令 -->
    ------------------------------------------------------
    <#macro m2 a b c >
        ${a}--${b}--${c}
    </#macro>
    <@m2 a="测试1" b="测试2" c="测试3" />
    ----------------------------------------------------
    <#macro border> 
      <table border=4 cellspacing=0 cellpadding=4><tr><td> 
        <#nested> 
      </td></tr></table> 
    </#macro> 
    <@border >表格中的内容!</@border>
    -------------------------------------------------------
    测试命名空间:
    <#import "b.ftl" as bb  />
    <@bb.copyright date="2010-2011" />
    ${bb.mail}
    <#assign mail="my@163.com"  />
    ${mail}
    <#assign mail="my@163.com" in bb  />
    ${bb.mail}
  • 相关阅读:
    Postgres 的 Range 类型
    Postgres 的 Array 类型
    joi库 学习笔记
    nginx官方文档 之 http负载均衡 学习笔记
    pm2 官方文档 学习笔记
    SSH 学习笔记
    防止活动上线时 微信openid 被伪造的解决办法
    PHP 中 var_export、print_r、var_dump 调试中的区别
    nake_api_protect 请求保护器——防止请求被恶意刷
    接口的防刷办法
  • 原文地址:https://www.cnblogs.com/wwzyy/p/5497146.html
Copyright © 2020-2023  润新知