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. 用 flow.ci 让 Hexo 持续部署

    编者按:感谢 @小小小杜 投稿,原文链接Juglans' Blog.如果你也想体验 flow.ci 的自动化持续部署,来 http://flow.ci 首页提交申请,邀请码随后会发送到邮箱:) flo ...

  2. JQuery判断数组中是否包含某个元素$.inArray("元素字符串", 数组名称);

    var arry = [ "C#", "html", "css", "JavaScript" ]; var result ...

  3. Linux常用命令01

    Linux对于我们来说,就是跑程序的运行平台,简单的来说,就是服务器,自己也没怎么系统的学习Linux的命令,随着项目的需要, 比如要查找日志,哪里出问题了,哪里报错了,因此自己也慢慢地懂一些常用的L ...

  4. HTML5语义标签的实践

    <article> 定义一篇文章 论坛发帖 博客文章 一篇文章 <article>  <h1>标题</h1>  <p>内容</p> ...

  5. 本地MVC项目发布到IIS服务器

    0瞎扯 朋友们有时候我们写个一个web程序只能使用卡西尼服务器调试,下面我教大家发布到IIS服务器上(包括本地ISS7.5和远程服务器 IIS) 1.VS发布 a.点击web项目->发布

  6. Node.js的学习--使用cheerio抓取网页数据

    打算要写一个公开课网站,缺少数据,就决定去网易公开课去抓取一些数据. 前一阵子看过一段时间的Node.js,而且Node.js也比较适合做这个事情,就打算用Node.js去抓取数据. 关键是抓取到网页 ...

  7. HTML5移动Web开发(四)——移动设计

    桌面网站的设计趋势是固定布局(fixed layout)或流体布局(fluid layout),而在移动网站中我们应该始终使用流体布局,它可以使你的网站适应不同的设备尺寸. 固定宽度布局(Fixed ...

  8. Spark入门实战系列--6.SparkSQL(中)--深入了解SparkSQL运行计划及调优

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.1  运行环境说明 1.1.1 硬软件环境 线程,主频2.2G,10G内存 l  虚拟软 ...

  9. java线程(1)--概念基础

    参考:http://lavasoft.blog.51cto.com/62575/99150 http://blog.csdn.net/baby_newstar/article/details/6783 ...

  10. c#实现查询程序运行线程数

    class Program { static void Main(string[] args) { List<Thread> list = new List<Thread>() ...