【 FreeMarker】比ajax更好用的展示数据的工具

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014322206/article/details/82377884

一、什么是FreeMarker

Freemarker是一个模板引擎,基于模板生成文本输出的通用工具,是一个java类库,程序员可以嵌入他们所开发产品的组件。

Freemarker主要用于MVC中的view层,生成html展示数据给客户端,可以完全替代jsp。 

Freemarker通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据。

二、模板编写(FTL)

模板编写为FreeMarker Template Language (FTL)

2.1模板文件

模板文件和通常的静态HTML页面一样存放在web服务器上,当访问该页面时,FreeMarker会介入执行,动态转换模板,将最新的数据内容替换掉模板中${...}的部分,之后将结果发送到访问者的web浏览器中。模板文件示例如下:

<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome ${user}!</h1>
  <a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>

其中显示的数据是在 FreeMarker 之外准备的,通常是一些 "真正的" 编程语言(比如Java) 所编写的代码。这种显示逻辑和业务逻辑相分离的做法是非常有用的。

在HTML中放置能被FreeMarker所解析的特殊代码片段:

  • 插值${...}:FreeMarker将会输出真实的值来替换大括号内的表达式。
  • FTL 标签:FTL标签也称为指令,以 # 开头。下面会详细介绍一些指令。
  • 注释:使用 <#-- and --> 来进行注释。

2.1.1常用的FTL指令

  1. ​​​​​​​list 指令

当需要列表显示内容时,list指令是必须的。

<p>We have these animals:
<table border=1>
  <#list animals as animal>
    <tr><td>${animal.name}<td>${animal.price} Euros
  </#list>
</table>

那么输出结果将会是这样的:

<p>We have these animals:
<table border=1>
    <tr><td>mouse<td>50 Euros
    <tr><td>elephant<td>5000 Euros
    <tr><td>python<td>4999 Euros
</table>

2.2 数据模型

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

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

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

总的来说:模板 + 数据模型 = 输出

猜你喜欢

转载自blog.csdn.net/u014322206/article/details/82377884