网上销售平台--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>

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

网上销售平台--pom.xm文件

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">    ...
  • J1271820107
  • J1271820107
  • 2015年11月12日 11:52
  • 403

图书销售系统可行性分析报告

1. 引言 1.1 编写目的   可行性分析的目的是规范化本软件的编写,整合本软件的基本结构和所需要实现的基本功能,旨在于推进软件开发的进度,便于对软件开发过程中的控制与管理,同时提出了本图书销...
  • jianyuling199
  • jianyuling199
  • 2014年04月28日 09:45
  • 2391

网上销售平台--私服的搭建(八)

1.nexus 介绍    是开源的,用该框架架设maven私有服务器 2.nexus私服环境搭建     把nexus.war包放到tomcat的webapps下面     浏览且登录   ...
  • J1271820107
  • J1271820107
  • 2015年11月20日 12:53
  • 149

电信人的数据应用:销售指引系统

文/帆软传说哥(微信ID:frbiaoge)2014年中国电信开始进行全面的深化改革,在基础业务领域,推出了“划小承包与倒三角服务支撑体系”,目的是构建以一线需求为导向的通信企业运营新模式。在这股改革...
  • yuanziok
  • yuanziok
  • 2015年09月15日 11:49
  • 1192

网上不能买烟,你知道吗?

问:现在网上购物这么方便,为啥网上不能购买卷烟呢? 答:随着目前网络购物的发展,越来越多的商品都可以通过网络购买,但卷烟却不能网购,其原因主要有以下三点:     一是网购卷烟违反了国家的相关法律。首...
  • qq_27093465
  • qq_27093465
  • 2016年07月17日 14:12
  • 3828

市场上终于出现了一款阿里云虚拟主机代理平台(源码免费下载)

万网被阿里云收购后,agent center不就宣布下线,阿里云的代理商只能通过API来销售阿里云的虚拟主机域名和和邮箱,但市场上一直没有什么免费好用的阿里云虚拟主机代理平台。现在,由万维景盛开发的阿...
  • grandhost
  • grandhost
  • 2017年06月25日 09:17
  • 1685

面向集团客户的云计算运营平台概述——之云计算运营平台方案(一)

云计算运营平台采用“Cordys BOP平台+应用”的模式构架,以此为基础构建开放的PaaS平台和运营体系。在运营平台技术规范体系指导下,由平台提供基础云能力和技术服务,并由基于平台构建的SaaS应用...
  • xiaoyw
  • xiaoyw
  • 2013年12月04日 10:42
  • 2788

网上融资平台有哪些网上融资平台安全吗

网上融资平台有哪些网上融资平台安全吗 爱拼才会赢,有房有车就这么简单! http://www.he666.com  真人娱乐,点击注册! 信誉好玩家多,开户充值提现非常方便快捷,真人妹妹发牌强烈...
  • jhhue83s
  • jhhue83s
  • 2015年03月25日 15:57
  • 13

freemarker报错之九

1、错误描述 五月 30, 2014 11:52:04 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc...
  • you23hai45
  • you23hai45
  • 2014年05月30日 23:51
  • 2203

网上销售平台--spring mybatis springMVC 整合(五)

spring  mybatis的整合 1.配置POM.xml文件 ,配置项目所需jar(见 POM.xml文件) 2.配置WEB.xml: 配置spring监听器     contextConf...
  • J1271820107
  • J1271820107
  • 2015年11月12日 11:40
  • 458
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网上销售平台--Freemarker 页面静态化(九)
举报原因:
原因补充:

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