什么是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"
键值的JavaMap
对象。相似地,latestProduct
就像是有getUrl()
和getName()
方法的Java对象。
总的来说,模板和数据模型是FreeMarker来生成输出(比如第一个展示的HTML)所必须的:
模板 + 数据模型 = 输出
下一篇:数据模型一览
以上是关于什么是FreeMarker的主要内容,如果未能解决你的问题,请参考以下文章