什么是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. poj 2186 Popular Cows :求能被有多少点是能被所有点到达的点 tarjan O(E)

    /** problem: http://poj.org/problem?id=2186 当出度为0的点(可能是缩点后的点)只有一个时就存在被所有牛崇拜的牛 因为如果存在有两个及以上出度为0的点的话,他 ...

  2. mongo复制集脑裂问题如何处理

    mongo replication 脑裂问题如何处理: 一.问题描述:一套mongo replication有4个节点.1个仲裁节点.在停止实例(或实例毁坏)的时候,导致所有节点都变为SECONDAR ...

  3. 一张图理解UINavigationBar,UINavigationItem,UIBarButtonItem,UITabBar,UITabBarItem,UITabBarButton

  4. 【bind服务简单发布及优化部署】

    主DNS 1:安装bind服务包 2:vim  /etc/named.conf区域解析控制文件 3:vim /etc/named.rfc1912.zones解析方向文件 4:vim var/named ...

  5. collections模块的使用

    1. Counter counter是collections中的一个模块, 它能够统计出字符串/文本中的每一个元素出现的次数, 并可以对结果进行进一步的处理. 使用方法 传入: 字符串 默认返回: C ...

  6. 源码安装CentOs7下的PHP7

    首先安装APACHE环境,直接用yum安装 yum install httpd httpd-devel /etc/httpd/ systemctl start httpd.service #启动apa ...

  7. Test类实验

    package PC_TEST; class CPU{ int speed; CPU(){ speed=0; } CPU(int k){ speed=k; } void setSpeed(int k) ...

  8. [拉格朗日反演][FFT][NTT][多项式大全]详解

    1.多项式的两种表示法 1.系数表示法 我们最常用的多项式表示法就是系数表示法,一个次数界为\(n\)的多项式\(S(x)\)可以用一个向量\(s=(s_0,s_1,s_2,\cdots,s_n-1) ...

  9. 44- EF + Identity实现

    1-配置EF, 需要创建如下几个类 默认User主键为guid类型,现在改成int类型 namespace MvcCookieAuthSample.Models { public class Appl ...

  10. 3106: [cqoi2013]棋盘游戏

    3106: [cqoi2013]棋盘游戏 链接 分析: 极大极小搜索 + 记忆化. 代码 #include<bits/stdc++.h> using namespace std; type ...