关闭

网上销售平台--Freemarker 页面静态化(九)

标签: Freemarker 页面静态化
422人阅读 评论(0) 收藏 举报
分类:
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写

FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图)
wKiom1ZNfmryiJiKAAAb_fr77R8479.png

模板 + 数据模型 = 输出

FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件
FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境
FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库

FreeMarker是免费的


(1)实例代码:

首先导包:freemarker-2.3.23.jar

//测试数据类
package com.learn.freem;
import java.io.File;
import java.io.FileWriter;
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 com.learn.io.EntityMaker;

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

public class TestFreemakerEntity {
    public static void main(String[] args) {
        // 配置对象 .html
        Configuration conf = new Configuration();
        // 模板路径
        String dir = "D:\\学习\\web\\Freemarker\\filt\\";
        try {
            // 导入模板目录
            conf.setDirectoryForTemplateLoading(new File(dir));
            // 获取模板
            Template template = conf.getTemplate("Templatefreemaker.html");
            
            //以下的为测试数据
            // 数据
            Map root = new HashMap();
            root.put("hello", "数据");

            // 返回对象
            EntityMaker m = new EntityMaker(1000, "丽丽");
            root.put("per", m);

            // 遍历List
            List<EntityMaker> list = new ArrayList<EntityMaker>();
            for (int i = 0; i < 10; i++) {
                EntityMaker maker = new EntityMaker(11 + i, "丽丽" + i);
                list.add(maker);
            }
            root.put("mm", list);

            // 遍历Map
            Map map = new HashMap();
            map.put("id", "1000");
            map.put("name", "丽丽");
            map.put("age", "21");
            root.put("map", map);

            // 遍历List<Map>
            Map map1 = new HashMap();
            map1.put("id", "1111");
            map1.put("name", "林林");
            Map map2 = new HashMap();
            map2.put("id", "1002");
            map2.put("name", "丽丽");
            List<Map> maplist = new ArrayList<Map>();
            maplist.add(map1);
            maplist.add(map2);
            root.put("maplist", maplist);
            
            //时间处理
            root.put("dt", new Date());

            // 输出流(生成的静态页面)
            Writer out = new FileWriter(new File(dir + "creatinghello.html"));
            // 生成开始
            template.process(root, out);

            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("生成完毕");
    }
}


//测试数据实体类

package com.learn.io;
public class EntityMaker {
    private Integer pesrID;
    private String pesrName;

    public Integer getPesrID() {
        return pesrID;
    }

    public void setPesrID(Integer pesrID) {
        this.pesrID = pesrID;
    }

    public String getPesrName() {
        return pesrName;
    }

    public void setPesrName(String pesrName) {
        this.pesrName = pesrName;
    }

    public EntityMaker(Integer pesrID, String pesrName) {
        super();
        this.pesrID = pesrID;
        this.pesrName = pesrName;
    }

    public EntityMaker() {
        super();
    }

}




<!--模板-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>模板</title>
</head>
<body>
    <h2>数据</h2>
    ${hello}
    <hr>
    
    <h2>返回对象</h2>
    编号:${per.pesrID}<br>
    姓名:${per.pesrName}
    <hr>
    
    <h2>遍历List</h2>
    <#list mm as p>
        编号:${p.pesrID}+姓名:${p.pesrName}<br/>
    </#list>
    <hr>
    
    <h2>遍历Map</h2>
    <#list map?keys as key>
           ${map[key]}
    </#list>
    <hr>
    
    <h2>遍历List Map</h2>
    <#list maplist as map>
       <#list map?keys as key>
          ${map[key]}
       </#list>
     </#list>
     <hr>
     
    <h2>if else</h2>
     <#list ["丽丽","林林","林丽"] as n>
      <#if n!="林丽">
        ${n}
     <#else>
             今天林丽值班
      </#if>
    </#list>
    <hr>
    
    <h2>时间处理</h2>
            年月时间:${dt?datetime}<br/>
           时间:${dt?time}<br>
           年月:${dt?date}
        
</body>
</html>


<!-- (生成的静态页面) -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>freemaker</title>
</head>
<body>
    <h2>数据</h2>
    数据
    <hr>
    
    <h2>返回对象</h2>
    编号:1,000<br>
    姓名:丽丽
    <hr>
    
    <h2>遍历List</h2>
        编号:11+姓名:丽丽0<br/>
        编号:12+姓名:丽丽1<br/>
        编号:13+姓名:丽丽2<br/>
        编号:14+姓名:丽丽3<br/>
        编号:15+姓名:丽丽4<br/>
        编号:16+姓名:丽丽5<br/>
        编号:17+姓名:丽丽6<br/>
        编号:18+姓名:丽丽7<br/>
        编号:19+姓名:丽丽8<br/>
        编号:20+姓名:丽丽9<br/>
    <hr>
    
    <h2>遍历Map</h2>
           1000
           丽丽
           21
    <hr>
    
    <h2>遍历List Map</h2>
          1111
          林林
          1002
          丽丽
     <hr>
     
    <h2>if else</h2>
        丽丽
        林林
             今天林丽值班
    <hr>
    
    <h2>时间处理</h2>
            年月时间:2015-11-20 13:18:02<br/>
           时间:13:18:02<br>
           年月:2015-11-20
        
</body>
</html>

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:32998次
    • 积分:806
    • 等级:
    • 排名:千里之外
    • 原创:47篇
    • 转载:14篇
    • 译文:0篇
    • 评论:1条
    最新评论