一、输出(以一个HTML为例)output
<html>
<head>
<title> Welcome!</ title>
</head>
<body>
<h1> Welcome John Doe!</ h1>
<p>我们的最新产品:<a href =“ products / greenmouse.html “> 绿色老鼠 </a>!</p>
</ body>
</ html>
二、模板Template
数据我们需要从服务器获得,模板就是提供一个样例,告诉我们以怎么得方式取出数据屏显示在模板上,最后数据一个例如html的输出结果
<html>
<head>
<title> Welcome!</title>
</head>
<body>
<h1> Welcome${user}!</h1>
<p>我们的最新产品:
<a href =“ ${latestProduct.url} “> $ {latestProduct.name} </a>!</p>
</body>
</html>
从中我们可以卡看出,当我们访问模板时,FreeMarker会通过${...}方法,对模板中相应位置的数据尽心替换,然后显示输出。
注意:
该模板要显示的数据是在FreeMarker外部准备的,通常是用一些“真正的”编程语言(如JAVA)编写的部分,模板的作用是保持展示问题,不涉及变成和逻辑问题。所以也就不能用改模板进行数据的更新,需要在FreeMarker外部准备。
三、数据模型Data Model
就模板而言,数据模型是一个树形结构。类似于用盘上的文件姐和文件。我们可以将其视觉化为:
(根)
| + - user =“大乔”
| + - latestProduct
| + - url =“products / greenmouse.html”
| + - 名称 =“绿色鼠标”
注意:
以上只是一个可视化; 数据模型不是文本格式,而是来自Java对象。对于Java程序员来说,根可能是带有getUser()
和getLatestProduct()
方法的Java对象,也可能是Map
带有"user"
和"latestProducts"
键的Java 。同样, latestProduct
也许是Java对象 getUrl()
和getName()
方法
总之,FreeMarker需要一个模板和一个数据的模型来生成一个HTML