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. 使用OData技术遇到的问题及解决办法

    “System.NotSupportedException”类型的未经处理的异常在 Microsoft.Data.Services.Client.dll 中发生 其他信息: 对此 POST 请求的响应 ...

  2. Atitit 图像处理30大经典算法attilax总结

    Atitit 图像处理30大经典算法attilax总结 1. 识别模糊图片算法2 2. 相似度识别算法(ahash,phash,dhash)2 3. 分辨率太小图片2 4. 横条薯条广告2 5. 图像 ...

  3. 不要怂,就是GAN (生成式对抗网络) (一)

    前面我们用 TensorFlow 写了简单的 cifar10 分类的代码,得到还不错的结果,下面我们来研究一下生成式对抗网络 GAN,并且用 TensorFlow 代码实现. 自从 Ian Goodf ...

  4. fir.im Weekly - 从零开始创建 Android 新项目

    今年的 Google I/O 大会上,人工智能和虚拟现实的产品发布让我们对未来多了几分惊喜.对于开发者部分,Google 发布了 Android N 系统,感受最深的是全新的 Android Stud ...

  5. c#将list集合转换为datatable的简单办法

    public static class ExtensionMethods        {        /// <summary>        /// 将List转换成DataTabl ...

  6. 邻接表有向图(三)之 Java详解

    前面分别介绍了邻接表有向图的C和C++实现,本文通过Java实现邻接表有向图. 目录 1. 邻接表有向图的介绍 2. 邻接表有向图的代码说明 3. 邻接表有向图的完整源码 转载请注明出处:http:/ ...

  7. 10个优秀的 HTML5 & CSS3 下拉菜单制作教程

    下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用 HTML5 和 CSS3 可以更容易 ...

  8. Windows Azure HandBook (8) Azure性能测试(1)

    <Windows Azure Platform 系列文章目录> 我们在项目上线之前,常常需要对部署在微软云上的应用软件做压力测试. 一般的压力测试,常常在本地计算机安装压力测试软件 (比如 ...

  9. Windows Azure Cloud Service (11) PaaS之Web Role, Worker Role(上)

    <Windows Azure Platform 系列文章目录> 本文是对Windows Azure Platform (六) Windows Azure应用程序运行环境内容的补充. 我们知 ...

  10. Windows Azure Virtual Network (6) 设置Azure Virtual Machine固定公网IP (Virtual IP Address, VIP) (1)

    <Windows Azure Platform 系列文章目录> 注意:本文介绍的是Global Azure (http://www.windowsazure.com),如果你使用的是由世纪 ...