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. Oracle日期语言修改

    -- value带有两个参数,第一个指下限,第二个指上限,将会生成下限到上限之间的数字,但不包含上限.select ceil(dbms_random.value(1000,9999)) from du ...

  2. MVVM架构~使用boxy和knockoutjs实现编辑功能

    返回目录 这个功能我认为非常有用,尤其在后台管理系统中,它对用户来说,使用体验这块非常不错,下面是它的截图

  3. 爱上MVC3~布局页的继承与扩展

    回到 目录 在MVC3中引入了Razor引擎,这对于代码的表现力上是个突破,同时母板页也变成了_Layout,所以,我们就习惯上称它为布局页面,在razor里,布局页面是可以继承的,即,一个上下公用的 ...

  4. js实现『加载更多』功能实例

    DEMO : 滚动加载示例 关于如何实现『加载更多』功能,网上有插件可用,例如比较著名的使用iscroll.js实现的上拉加载更多.下拉刷新功能. 但实际用起来却是很麻烦.由于是第三方插件,要按照对方 ...

  5. 程序员藏经阁 Linux兵书

    程序员藏经阁 Linux兵书 刘丽霞 杨宇 编   ISBN 978-7-121-21992-4 2014年1月出版 定价:79.00元 536页 16开 内容提要 <Linux兵书>由浅 ...

  6. Lucene学习

    一.全文索引的原理 数据存在形式: 1.结构化数据: 指具有固定格式或有限长度的数据,如数据库,元数据等. 2.非结构化数据(全文数据): 指不定长或无固定格式的数据,如邮件,word文档等. 3.半 ...

  7. C#与JS实现 获取指定字节长度 中英文混合字符串 的方法

    平时在作数据库插入操作时,如果用 INSERT 语句向一个varchar型字段插入内容时,有时会因为插入的内容长度超出规定的长度而报错. 尤其是插入中英文混合字符串时,SQL Server中一般中文要 ...

  8. CCNA学习 NAT网络地址转换

    CCNA基础 NAT网络地址转换 在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是 ...

  9. 通过Class获取标签,兼容的几种思路

    在js中通过document.getElementsByClassName()在低版本IE浏览器中不兼容.然后我写了几种方案,大家可以参考参考. html代码 <!DOCTYPE html> ...

  10. SeaJS与RequireJS最大的区别

    SeaJS与RequireJS最大的区别 U_U 2013-06-20 16:21:12 执行模块的机制大不一样-----------------------------------由于 Requir ...