Apache FreeMarker模板引擎:Java库来生成文本输出(HTML网页,电子邮件,配置文件,源代码,等等)基于模板和变化的数据。模板都写在FreeMarker模板语言(FTL),这是一个简单的、专门的语言(不是一个成熟的编程语言(比如PHP)。你要准备的数据显示在一个真正的编程语言,就像数据库查询和做生意的计算问题,然后模板已经准备好的数据的显示。模板中你关注如何呈现数据,和外部的模板你关注哪些数据。

这种方法通常被称为MVC(模型-视图-控制器)模式,并为动态网页特别受欢迎。它有助于分离网页设计师(HTML作者)从开发者(Java程序员通常)。在模板设计者不会面临复杂的逻辑,可以改变页面的外观无需程序员修改或重新编译代码。

FreeMarker最初创建时生成HTML页面在MVC web应用程序框架,它不是绑定到servlet或东西的HTML或之上。它的非web应用程序环境中使用。

 

假设你在一个网站需要一个HTML页面,类似于:

< html >
<头>
<标题>欢迎! < /名称>
< / >头
<身体>
<标题>欢迎John Doe ! < / h1 >
< p >我们的最新产品:
< a href = "产品/ greenmouse。html " >绿色鼠标< / > !
< /身体>
< / html >

但用户的名称(上面的“John Doe”)取决于登录的用户是谁,和最新的产品信息应该来自一个数据库。因为这个数据变化,你不能不能使用静态HTML。相反,您可以使用一个模板所需的输出。模板是一样的静态HTML,除了它包含一些指令FreeMarker使其动态:

< html >
<头>
<标题>欢迎! < /名称>
< / >头
<身体>
<标题>欢迎$ { user } ! < / h1 >
< p >我们的最新产品:
< a href = " $ { latestProduct.url } " > $ { latestProduct.name } < / > !
< /身体>
< / html >

模板存储在Web服务器上,通常就像静态HTML页面。但每当有人访问这个页面,FreeMarker介入,将纯HTML的模板动态替换 ${...}s与最新的内容,并将结果发送到访问者的Web浏览器。所以访问者的浏览器将收到类似HTML(即第一个例子。纯HTML没有FreeMarker指令),它不会察觉到FreeMarker在服务器上使用。(当然,模板文件存储在Web服务器上没有改变,替换只出现在Web服务器的响应)。

注意,模板不包含编程逻辑来找出当前的客人是谁,或查询数据库获得最新的产品。要显示的数据准备FreeMarker外,通常通过部分写在一些“真实”编程语言(如Java)。模板作者不必知道这些值是如何计算的。事实上,这些值的计算方式可以完全改变了模板可以保持完全相同,而且,完全改变了页面的外观不会碰到任何东西,但模板。表示逻辑与业务逻辑的分离可以特别有用,当模板作者(设计师)和程序员都是不同的个体,但也有助于管理应用程序的复杂性,如果他们是同一个人。保持模板集中在陈述问题(视觉设计,布局和格式)是一个关键的有效使用像FreeMarker模板引擎。

准备的全部数据称为数据模型的模板。模板作者而言,数据模型是一个树状结构(如硬盘上的文件夹和文件),而在这种情况下,可以可视化为:

(根)
|
+ -用户=“大乔”
|
+ - latestProduct
|
+ - url =“产品/ greenmouse.html”
|
+ - name =“绿色鼠标”
注意:

注意:

以上只是一个可视化;数据模型的文本格式,它从Java对象。对于Java程序员,根可能是一个Java对象 getUser() getLatestProduct()方法,或者一个Java Map "user""latestProducts"钥匙。同样的, latestProduct也许是一个Java对象 getUrl()getName()方法。

早些时候,你从这个数据模型的选择值, user latestProduct.name表达式。如果我们继续类比数据模型就像一个文件系统,然后“(根)”,latestProduct对应的目录(文件夹), user, url name文件的目录。

概括、模板和数据模型的需要FreeMarker生成输出(如第一次显示的HTML):

模板+ 数据模型的= 输出

FreeMarker几个亮点:

  • 强大的模板语言:条件块、迭代、作业、字符串和算术运算和格式化,宏和函数,包括其他模板,逃避在默认情况下(可选),和许多更多

  • 多用途和轻量级:零依赖,任何输出格式,可以从任何地方加载模板(可插入),许多配置选项

  • 国际化/ localization-aware:语言环境敏感的数量和日期/时间格式,局部模板的变化。

  • XML处理功能:删除XML DOM-s到数据模型的遍历,甚至以声明的方式处理它们

  • 通用的数据模型的:Java对象暴露在模板变量通过可插入适配器的树,这决定模板如何看待他们。

freemarker:简介的更多相关文章

  1. freeMarker(一)——freeMarker简介

    学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net FreeMarker简介: FreeMarker 是一款 模板引擎: ...

  2. Spring MVC+FreeMarker简介

    最近做项目,刚接触到SpringMVC与FreeMarker框架,就简单介绍一下自己的理解,不正确的地方请大家指教!! 1.Spring MVC工作原理: 用户发送请求--->前端服务器去找相对 ...

  3. FreeMarker简介

    什么是 FreeMarker? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具. 它不是面向最终用 ...

  4. Freemarker 简介

    1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效果就不会再发生变化(除非你修改 ...

  5. Java模板引擎之freemarker简介

  6. 简介JSP与FreeMarker及Volicity区别

    FreeMarker FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个 ...

  7. 页面静态化技术Freemarker技术的介绍及使用实例.

    一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...

  8. Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

    模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...

  9. JSP利用freemarker生成基于word模板的word文档

    利用freemarker生成基于word模板的word文档 freemarker简介 FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器 ...

  10. velocity freemarker比较

    相比较 FreeMarker 而言,Velocity 更加简单.轻量级,但它的功能却没有 FreeMarker 那么强大. 对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简 ...

随机推荐

  1. Springlake-01 介绍&功能&安装

    1. 简介与功能 1)Springlake 是一个企业内容平台SECP 2)是一个可配置的系统,80%内容可以配置 3)允许建立和配置垂直解决方案 4)敏捷和占用空间小,可伸缩 5)端到端的安全性与性 ...

  2. DDD~领域层

    回到目录 再论Domain与Infrastructure 在面向领域的设计中,领域层(Domain)实现上是位于最底层的,其它层有对它的引用,包括基础设施层(Infrastructure)也是去引用领 ...

  3. weinre使用

    2016-1-21 更新说明: 微信web开发者工具已经集成了weinre,只需设置手机代理便可调试任意页面,更简单更方便,推荐使用! Web应用开发者需要针对手机进行界面的调试,但是手机上并没有称心 ...

  4. 理解 Lua 的那些坑爹特性

    按:最近看到了依云的文章,一方面,为Lua被人误解而感到十分难过,另一方面,也为我的好友, 依云没有能够体会到Lua的绝妙和优雅之处而感到很遗憾,因此我写了这篇文章,逐条款地说明了 依云理解中出现的一 ...

  5. Atitit 常见的树形结构 红黑树  二叉树   B树 B+树  Trie树 attilax理解与总结

    Atitit 常见的树形结构 红黑树  二叉树   B树 B+树  Trie树 attilax理解与总结 1.1. 树形结构-- 一对多的关系1 1.2. 树的相关术语: 1 1.3. 常见的树形结构 ...

  6. KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册

    计算监控属性构造参考 计算监控属性可使用以下形式进行构造: ko.computed( evaluator [, targetObject, options] ) - 这种形式是创建一个计算监控属性最常 ...

  7. 快速入门系列--Log4net日志组件

    Log4net是阿帕奇基金会的非常流行的开源日志组件,是log4j的.NET移植版本,至今已经有11年的历史,使用方便并且非常稳定,此外很重要的一点是其和很多开源组件能很好的组合在一起工作,例如NHi ...

  8. JSON学习之二

    1.JSON语法是JavaScript对象表示法的子集,语法规则: **数据在名称/值对中 **数据由逗号分隔 **花括号保存对象 **方括号保存数组 2.JSON名称/值对:JSON数据的书写格式是 ...

  9. CSS3妙用

    scaleX的妙用 案例1 效果: HTML: <a href="javascript:;">我有下划线噢</a> CSS: a{ text-decorat ...

  10. 找到SQL Server数据库历史增长信息

        很多时候,在我们规划SQL Server数据库的空间,或向存储方面要空间时,都需要估算所需申请数据库空间的大小,估计未来最简单的办法就是看过去的趋势,这通常也是最合理的方式.     通常来讲 ...