码迷,mamicode.com
首页 > 其他好文 > 详细

什么是FreeMarker

时间:2019-09-11 21:23:38      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:示例   网页   内容   java程序员   接收   welcome   类库   服务   作者   

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

标签:示例   网页   内容   java程序员   接收   welcome   类库   服务   作者   

原文地址:https://www.cnblogs.com/mashiro-e/p/get_started.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!