`

FreeMarker 1 概述() FMPP安装使用

阅读更多

http://blogger.org.cn/blog/more.asp?name=lhwork&id=20795

 

模板引擎 Template Engine

在B/S程式设计中,常常有美工和程序员二个角色,他们具有不同专业技能:美工专注于表现——创建页面、风格、布局、效果等等可视元素;而程序员则忙于创建程式的商业流程,生成设计页面要显示的数据等等。

很多时候,要显示的资料在设计的时候并不存在,它们一般是在运行时由程式产生的,比如执行“价格不高于800NT的USB Disk”查询的返回结果。这种技术需求产生了JSP等Scriptlet,JSP十分强大,但是也常常被滥用,并导致一些不良的后果

  1. 将逻辑和表现混合在一起。
  2. 破坏了美工和程序员职责的正常分解。
  3. 使JSP页面难以阅读和维护。

模板引擎就是为了解决上面的问题而产生的。在设计HTML的时候,我们加入一些特定指令来指定要插入哪些数据,这些加了特殊指令的HTML或者其他文本,我们称为模板(Template)。而模板引擎会在输出页面时,用适当的数据替代这些代码。

模板和嵌入JSP的HTML是不同的,模板指令只有很有限的编程能力,可以避免混入商业逻辑。

三万英尺俯瞰FreeMarker

简单的说,FreeMarker就是一种用Java编写的模板引擎,它根据模板输出多种规格的文本。特别指出的是,FreeMarker与Web应用框架无关,它同样可以应用在非Web应用程序环境中。

下面我们来看看FreeMarker的模板:(product.ftl)

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

这个例子是在简单的HTML中加入了一些由${…}包围的特定代码,这些特定代码就是FreeMarker的指令。

至于user、latestProduct.url和latestProduct.name的具体内容则来自于数据模型(data model)。数据模型由程序员编程来创建,向模板提供变化的信息,这些信息来自于数据库、文件,甚至于在程序中直接生成。

模板设计者不关心数据从那儿来,只知道使用已经建立的数据模型。

借助FMPP(FreeMarker PreProcessor)来运行FreeMarker

首先说明的是FreeMarker的运行并不依赖于FMPP。FMPP只是一个FreeMarker的辅助工具,有了它,我们可以快速地调试FreeMarker输出结果,而不需要借助Java编程,这可以大大地减轻美工设计人员的调试难度。你可以从:>>http://fmpp.sourceforge.net/ 得到它。

在使用Freemaker的时候,我们需要下载相关的程序:

freemarker: >>http://freemarker.sourceforge.net/

在磁盘上建立相关的文件夹:

D:/work/src/product.ftl
D:/work/out/
D:/work/data/product.tdd
D:/work/config.fmpp

我们使用的配置文件(config.fmpp)设置如下:

sourceRoot: src
outputRoot: out
logFile: log.fmpp
modes: [
 copy(common/**/*.*, resource/*.*)
 execute(*.ftl)
 ignore(templates/*.*, .project, **/*.xml, xml/*.*, *.js)
]
replaceExtensions: [ftl, html]
sourceEncoding: gb2312
data: tdd(../data/product.tdd)

注意:"data: tdd(../data/product.tdd)" 指定了模板的数据源,TDD是fmpp支持的数据格式之一 ,关于TDD介绍可参阅fmpp文档,也可参看TDD。product.tdd内容是这样的:

{
	user: "Big Joe"
	latestProduct: {url: "products/greenmouse.html", name: "Green Mouse"}	
}

现在在dos下执行(假设FMPP安装在D:/FMPP下):

D:/work/>D:/FMPP/bin/fmpp

最后的输出结果是这样的,存放在文件out/product.html中:

<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome Big Joe!</h1>
  <p>Our latest product:
  <a href="products/greenmouse.html">green mouse</a>!
</body>
</html>

正如FreeMarker文档中所叙述的,FreeMarker的工作原理就是:

模板+数据=输出!

FreeMarker并不局限于生成html,甚至可以产生java代码,这仅仅取决于你如何设计模板而已。

现在有了FMPP这个强大工具,我们接下来可以快速学习FreeMarker的相关指令。let us go!

分享到:
评论
2 楼 xiangjun_yu 2012-12-28  
2010年的时候短暂使用过三五个月的ftl 只能算入门级吧 现在又要使用ftl了。
现在的项目需要有大量的表 需要自动生成一些代码 否则工作量太大,可能需要FPMM
1 楼 远方的你 2012-05-07  
谢谢,不错,学习了。

相关推荐

    FreeMarker概述

    FreeMarker概述、FreeMarker特性、FreeMarker应用指南

    freemarker概述

    1. **Web开发**: FreeMarker非常适合与MVC架构的Web应用框架(如Struts)结合使用,作为视图组件。 2. **非Web应用**: 由于FreeMarker与容器无关,它可以被轻松地应用于桌面应用或其他不需要Web服务器的环境中。 3. ...

    fmpp的安装和初步使用

    3. **模板语法**: FMPP基于FreeMarker模板语言,使用`&lt;#...&gt;`和`${...}`等语法来引用数据模型中的值。例如: ```html ${title} &lt;p&gt;This is a test: ${testValue} ``` 4. **预处理指令**: FMPP支持预处理指令,...

    FreeMarker概述API

    在提供的文档`freemarker-2.3.16 Doc.chm`和`Freemarker-2.3.16 API.chm`中,详细地列出了FreeMarker 2.3.16版本的所有类、接口、方法和属性,包括它们的使用示例和解释。这些文档是深入理解FreeMarker API和进行...

    MyEclipse插件安装之SVN、Freemarker、Ext使用安装

    ### MyEclipse插件安装详解:SVN、Freemarker、Ext使用安装 #### SVN插件安装与使用 **SVN服务端安装** 1. **安装步骤:** 首先确保您的计算机上已安装了SVN服务端,可以通过DOS命令行来启动SVN服务。打开DOS命令...

    MyEclipse安装freemarker插件

    1. **获取插件**:安装Freemarker插件的首要步骤是找到合适的插件文件。在描述中提到,这里有针对MyEclipse 8.6的安装文档和所需压缩包。如果没有提供,你也可以自行到官方网站或第三方插件库寻找最新的Freemarker...

    eclipse插件freemarker-ide+安装文档

    **Eclipse插件FreeMarker-IDE安装指南** FreeMarker是一个流行的模板引擎,广泛应用于Web开发中,特别是与Java相关的项目。它允许开发者将业务逻辑与HTML等视图模板分离,提高代码可读性和维护性。在Eclipse这个...

    freemarker及安装

    在本篇文章中,我们将深入探讨Freemarker的核心概念、安装过程以及其在实际项目中的应用。 一、Freemarker核心概念 1. 模板(Template):Freemarker的核心是模板,它是一个文本文件,包含了静态内容和动态占位符...

    FreeMarker概述2008

    1. **更丰富的特性**:FreeMarker支持更多的操作,如数字和日期的算术运算和格式化,国际化处理,以及更复杂的循环和数组处理。 2. **更强大的模板控制**:FreeMarker的宏功能更为强大,允许局部变量、递归宏调用、...

    基于gulp的前端构建工具集成javafreemarker开发环境

    1. **预处理FreeMarker模板**:使用gulp,我们可以设置一个任务来解析所有的FreeMarker模板文件,并将其转换为静态HTML。这一步通常包括读取模板文件、替换占位符并输出结果。 2. **模板编译**:通过安装如`gulp-...

    FreeMarker概述.pdf

    ### FreeMarker概述 #### 一、FreeMarker简介 FreeMarker是一个功能强大的模板引擎,主要用于根据提供的数据生成文本输出。该工具完全用Java编写,并且设计初衷是为了生成HTML Web页面,尤其是在MVC(Model-View-...

    freemarker插件安装包和具体使用文档说明

    Freemarker是一个强大的模板...总结,Freemarker插件的安装和使用是提升Java Web开发效率的关键步骤。了解其基本语法,结合IDE中的插件支持,以及查阅详细的使用文档,可以帮助开发者更好地掌握这一强大的模板引擎。

    Myeclipse2017Ci8安装freemarker

    - 创建一个新的Freemarker项目或在现有项目中尝试使用Freemarker模板,以验证是否正确安装。 ### 五、注意事项 1. **版本兼容性**:确保所安装的Freemarker版本与MyEclipse 2017Ci8版本兼容,避免因版本不匹配导致...

    freemarker 自定义freeMarker标签

    例如,如果你注册了一个名为`myCustomTag`的自定义指令,你可以在模板中这样使用:`&lt;@myCustomTag param1="value1" param2="value2"&gt;...&lt;/@myCustomTag&gt;`。 在实际开发中,自定义标签可以实现许多高级功能,如...

    freemarker-2.3.31-API文档-中文版.zip

    赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.31.pom; 包含翻译后的API文档:...

    Java中使用 FreeMarker 生成pdf盖章合同文件

    本篇文章将深入探讨如何在Java中使用FreeMarker生成带有盖章的PDF合同文件。 首先,让我们了解FreeMarker的基本概念。FreeMarker是一个基于模板的语言,它与Java代码分离,允许开发者用简单的模板语法来表示数据。...

    freemarker myeclipse 插件安装

    为了在MyEclipse中使用Freemarker模板,我们需要安装相应的插件。本文将详细介绍如何在MyEclipse中安装Freemarker插件。 首先,你需要了解的是Freemarker插件的作用。这个插件能够为MyEclipse提供Freemarker语言的...

    freemarker根据模版生成文件使用例子

    本文将详细解析一个具体的使用案例:如何利用Freemarker根据模板生成文件,特别是Java环境下生成Hibernate的配置文件(*.hbm.xml)。此案例不仅展示了Freemarker的基本用法,还涉及到了自定义类、接口以及模板加载...

    freemarker解析成pdf

    1. **创建模板**:在Freemarker中,我们需要创建一个`.ftl`(Freemarker Template Language)文件,其中包含静态文本和动态占位符。动态占位符由${}或#{}包裹,用于插入数据模型中的值。例如,`${title}&lt;/h1&gt;`会将...

    通过freemarker模板 生成PDF

    1. **创建Freemarker模板**:编写一个`.ftl`文件,包含HTML和Freemarker指令。 2. **准备数据模型**:在Java代码中,创建一个对象或Map,包含将要填充到模板中的数据。 3. **处理模板**:使用Freemarker API的`...

Global site tag (gtag.js) - Google Analytics