什么是Freemarker

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。

目前企业中:主要用Freemarker做静态页面或是页面展示

使用Freemarker所用到的jar

把下载到的jar包(freemarker-2.3.9.jar)放到\WebRoot\WEB-INF\lib目录下。下载地址:http://freemarker.sourceforge.net/freemarkerdownload.html (注:官方网站.org的经常打不开)

如果使用的是Maven结构,可在pom.xml中引入以下坐标

<dependency>
<groupId>freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.9</version>
</dependency>

Freemarker原理图

模板 +  数据模型 = 输出

第一步:Freemarker环境搭建

创建FMDemo类

      //第一步:实例化Freemarker的配置类
Configuration conf = new Configuration();
//第二步:给配置类设置路径
String dir = "C:\\Users\\lx\\workspaces-new\\freemarker\\ftl\\"; conf.setDirectoryForTemplateLoading(new File(dir)); Template template = conf.getTemplate("freemarker.ftl"); //第三步:处理模板及数据之间 关系 将数据与模板合成一个html
//第四步: 输出html
Writer out = new FileWriter(new File(dir + "hello.html"));
      // 定义数据
      Map root = new HashMap();
      root.put("world", "世界你好");
      //执行生成
      template.process(root, out);
      //关流
      out.flush();
      out.close();

创建页面模板ftl/freemarker.ftl

${world}

第二步:应用例子测试

例子1 : 对象输出

//定义数据

Map root = new HashMap();

Person p  = new Person();

root.put("person",p);

//页面

${person.id}=${person.name}

例子2 : 遍历List

//定义数据

Map root = new HashMap();

List<String> persons = new ArrayList<String>();

persons.add("范冰冰");

persons.add("李冰冰");

persons.add("何灵");

root.put("persons", persons);

//页面

<#list persons as p>

  ${p.id}/${p.name}

</#list>

例子3 : 遍历Map

//定义数据

Map root = new HashMap();

Map mx = new HashMap();

mx.put("fbb","范冰冰");

mx.put("lbb","李冰冰");

root.put("mx",mx);

//页面

第一种写法:

${mx.fbb}/${mx.lbb}

第二种写法:

<#list mx?keys as k>

  ${mx[k]}

</#list>

例子4 : 遍历List<Map>

//定义数据

Map root = new HashMap();

List<Map> maps = new ArrayList<Map>();

Map pms1 = new HashMap();

pms1.put("id1", "范冰冰");

pms1.put("id2", "李冰冰");

Map pms2 = new HashMap();

pms2.put("id1", "曾志伟");

pms2.put("id2", "何炅");

maps.add(pms1);

maps.add(pms2);

root.put("maps", maps);

//页面

第一种写法:

<#list maps as m>

${m.id1}/${m.id2}

</#list>

第二种写法:

<#list maps as m>

<#list m?keys as k>

${m[k]}

</#list>

</#list>

例子5 : 获取当前选代的索引

//定义数据

Map root = new HashMap();

List<String> persons = new ArrayList<String>();

persons.add("范冰冰");

persons.add("李冰冰");

persons.add("何灵");

root.put("persons", persons);

//页面

<#list persons as p>

${p_index}

</#list>

例子6 : 在模版中进行赋值

1:<#assign x=0 />

${x}

2:<#assign x="${world}" />

${x}

3:<#assign x>世界太好了</#assign>

${x}

4:<#assign x>

<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>

${n}

</#list>

</#assign>

${x}

例子7 : #if

1:==   !=

<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>

<#if n != "星期一">

${n}

</#if>

</#list>

2:按索引

<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>

<#if n_index != 0>

${n}

</#if>

</#list>

3: ||   &&

<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>

<#if (n_index == 1) || (n_index == 3)>

${n}

</#if>

</#list>

例子8 : #else

<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n>

<#if (n_index == 1) || (n_index == 3)>

${n} --红色

<#else>

${n} --绿色

</#if>

</#list>

例子9 : 时间格式

//定义数据

Map root = new HashMap();

root.put("cur_time",new Date());

//页面

1:date

${cur_time?date}

2:datetime

${cur_time?datetime}

3:time

${cur_time?time}

例子10 : null处理

//定义数据

Map root = new HashMap();

root.put("val",null);

//页面

${val!"我是null!"}

例子11 : 宏定义

1:

<#macro table u>

${u}

</#macro>

<@table u=8 />

2:

<#macro table u>

${u}

<#nested/>

</#macro>

<@table u=8 >这是8</@table>

例子12 :

将另一个页面引入本页面时可用以下命令完成

<#include "/include/head.html">

静态化技术Freemarker的更多相关文章

  1. 网页静态化技术Freemarker的详细介绍

    网页静态化技术Freemarker 一.Freemarker的基本介绍 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道 ...

  2. 网页静态化技术--Freemarker入门

    网页静态化技术:为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又 ...

  3. 网页静态化技术Freemarker

    1.为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又有大量的信息 ...

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

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

  5. 网页静态化解决方案-Freemarker demo+语法

    1.网页静态化技术Freemarker 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说 ...

  6. 网页静态化技术Freemarkerh简介

    1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又有大量的信 ...

  7. 网页静态化—redis | freemarker

    1.   学习计划 1.商品详情页面展示,动态展示 jsp + redis 2.使用freemarker实现网页静态化 3.ActiveMq同步生成静态网页 两个方案对比,方案一依赖web容器,red ...

  8. 网页静态化解决方案Freemarker

    序言: 沉淀了三个月,逐步将自己最近两年在公司中用到的技术和知识点,重新整理归纳了下,对比以前可以发现,现在技术更新越来越快,也越来越成熟,在互联网企业,用到的技术也更先进,更领先,比如微服务.分布式 ...

  9. php页面静态化技术;学习笔记

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. ABAP术语-Connection Type

    Connection Type 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/17/1042479.html A connection ty ...

  2. web前端逻辑计算,血的教训

    在web前端进行页面开发的过程中,难免的遇到逻辑问题,这不是什么大问题,既然走上IT条黑道,那小伙伴们的逻辑推理能力及逻辑计算能力是不会有太大问题的. 然而,有的逻辑计算,就算你逻辑计算能力超强,也不 ...

  3. Java OOP——第一章 对象和封装

    1.软件出现的目的: 用计算机的语言描述现实世界 用计算机解决现实世界的问题   ◆面向对象设计和开发程序的好处:    交流更加流畅    提高设计和开发效率 计算机语言的发展向接近人的思维方式演变 ...

  4. Django---admin简单功能

    admin admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理.默认情况下,它的功能已经非常强大,如果你不需要复杂的功能,它已经够用,但是有时候,一些特殊的功能还需 ...

  5. 动态规划----FatMouse’s Speed(HDU 1160)

    参考:https://blog.csdn.net/u012655441/article/details/64920825 https://blog.csdn.net/wy19910326/articl ...

  6. poj 2393 奶牛场生产成本问题 贪心算法

    题意:有一个奶牛场,第i周的生产成本为c,需要数量为 y,每周的存储成本为s.问怎么安排使得成本最低? 思路: 成本最低是吧?求出每周的最低成本*该周需要的数量就是成本最低 每周的成本有两个:自己本周 ...

  7. WPF中的命令与命令绑定(二)

    原文:WPF中的命令与命令绑定(二) WPF中的命令与命令绑定(二)                                              周银辉在WPF中,命令(Commandi ...

  8. 【转载】[Elasticsearch]ES入门

    传送门:http://www.cnblogs.com/xing901022 ES即简单又复杂,你可以快速的实现全文检索,又需要了解复杂的REST API.本篇就通过一些简单的搜索命令,帮助你理解ES的 ...

  9. Dubbo原理及配置

    技术交流群:233513714 Dubbo的背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进 ...

  10. Hibernate-ORM:12.Hibernate中的多对多关联关系

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客将讲述Hibernate中的多对多关联关系的操作,准备的篇幅较少,望海涵 一,讲述多对多 多对多的关联 ...