什么是FreeMarker

Posted mashiro-e

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是FreeMarker相关的知识,希望对你有一定的参考价值。

FreeMarker学习

什么是FreeMarker

一款模板引擎,基于静态的模板和动态的数据,生成html网页,配置文件,源代码的一个Java类库。

可以很方便实现后台数据和前端渲染的结合。FreeMarker最初的设计,是被用来在MVC模式的Web开发框架中生成HTML页面的,它没有被绑定到 Servlet或HTML或任意Web相关的东西上。它也可以用于非Web应用环境中。


入门

模板 + 数据模型 = 输出

来看一个简单的例子:

<html>
<head>
    <title>Welcome!</title>
</head>
<body>
    <!--显示用户名, 可变-->
    <h1>Welcome John Doe!</h1>
    <!--最新产品,也是可变的-->
    <p>Our latest product:
    <a href="./products/greenmouse.html">green mouse</a>!
</body>
</html>

这些数据都来自数据库,而且我们肯定不能用静态的html代码,因此我们可以在页面中增加一些‘变量’,用来代替变化的内容。

<html>
<head>
    <title>Welcome!</title>
</head>
<body>
    <h1>Welcome $user!</h1>
    <p>Our latest product:
    <a href="$latestProduct.url">$latestProduct.name</a>!
</body>
</html>

模板文件存放在Web服务器上,就像通常存放静态HTML页面那样。当有人来访问这个页面, FreeMarker将会介入执行,然后动态转换模板,用最新的数据内容替换模板中 $... 的部分, 之后将结果发送到访问者的Web浏览器中。访问者的Web浏览器就会接收到例如第一个HTML示例那样的内容 ,也就是没有FreeMarker指令的HTML代码。同时访问者也不会察觉到服务器端使用的FreeMarker,存储在Web服务器端的模板文件不会被修改;替换也仅仅出现在Web服务器的响应中。显示的数据是在 FreeMarker之外准备的,通常是一些 "真正的" 编程语言(比如Java) 所编写的代码。

为模板准备的数据整体被称作为 数据模型。模板作者要关心的是,数据模型是树形结构(就像硬盘上的文件夹和文件),在视觉效果上, 数据模型可以是:

(root)
  |
  +- user = "alex"
  |
  +- latestProduct
      |
      +- url = "products/greenmouse.html"
      |
      +- name = "green mouse"

注意,上面只是一个形象化显示;数据模型不是文本格式,它来自于Java对象。 对于Java程序员来说,root就像一个有 getUser()getLatestProduct() 方法的Java对象, 也可以有 "user""latestProducts" 键值的Java Map对象。相似地,latestProduct就像是有 getUrl()getName() 方法的Java对象。

总的来说,模板和数据模型是FreeMarker来生成输出(比如第一个展示的HTML)所必须的:

模板 + 数据模型 = 输出


下一篇:数据模型一览

以上是关于什么是FreeMarker的主要内容,如果未能解决你的问题,请参考以下文章

freemarker 笔记

freemarker 笔记

Freemarker的使用方法

Spring mvc整合freemarker详解

Spring mvc整合freemarker详解

Spring mvc整合freemarker详解