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

原创 2015年11月20日 13:05:06
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>

版权声明:本文为博主原创文章,转载需附上原创链接。

相关文章推荐

11(maven+SSH)网上商城项目实战之Freemarker 页面静态化

FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写  l         FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应...

springMVC freemarker实现页面静态化

最近在学习freemarker,这个模板技术已经很成熟,文档也很多。我研究了下利用它来实现页面静态化,静态化的好处你懂的,好了贴一下主要的代码。 首先是web.xml。 ...

FreeMarker页面静态化

目前的项目中需要对某些页面进行静态化,减轻服务器压力。前端是用FreeMarker编写的模板。在网上查阅的使用FreeMarker静态化页面的方案大致分为两种: 1.在controller层编写...

使用freemarker实现页面静态化

最近做一个电商网站,首页分类数据太多需要实现静态化,于是google了一下找了一大堆的资料.做了一个例子: 由于这个项目使用了freemarker,所以就用freemarker来实现页面静态化. ...

页面静态化技术Freemarker技术的介绍及使用实例.

一、FreeMarker简介   1、动态网页和静态网页差异    在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术。静态网页,随着HTML代码的生成,页面...

Freemarker页面静态化

Freemarker

Freemarker实现页面静态化cms

自己学习利用freemarker进行静态化的demo,旨在进行一点儿自我记录和分享交流,demo中做出了最简单的一个生产静态化页面和浏览生成的静态页面等的流程...

用Freemarker实现页面静态化

用Freemarker实现页面静态化(2009-12-10 13:41:18) 来源:http://ariyue.javaeye.com/category/44430?show_full=t...

型网站页面静态化解决方案 freemarker

有一个网络广告的网站叫全方位商机平台的项目,由于网站首页上板块划分很多,不同板块的数据库查询方式不同,首页内容量巨大,如果按照一般的动态jsp页面的话那么数据库查询将是巨大的开销,会导致首页访问速度的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网上销售平台--Freemarker 页面静态化(九)
举报原因:
原因补充:

(最多只允许输入30个字)