FreeMarker模板引擎在Java开发中的应用

时间:2022-10-14 11:26:58

FreeMarker模板引擎在Java开发中的应用

摘 要 随着Java语言的普遍应用,大量的基于Java的开发程序孕育而生,为了简化程序员的开发工作,引入freemarker作为一个模板引擎,一个基于模板生成文本输出的通用工具,介绍其特性和应用实例。

关键词 FreeMark;模板技术

中图分类号:TP393 文献标识码:A 文章编号:1671-7597(2013)21-0046-01

java语言是互联网诞生以来,最伟大的语言之一,Java本就是为互联网而产生,如今在银行、电信、医疗各种领域都有普遍应用,Java应用如此普遍给人的印象更多是强大,而如今互联网有一种走向就是个性化,每个人都需要展示自我,此时Java还能否胜任呢?答案是肯定的,而FreeMarker是基于Java开发的一个优秀的模板引擎,可以很完美的解决这个问题。

1 FreeMarker的定义

FreeMarker是一个模版引擎,一个使用Java编写,基于模版生成文本输出的通用工具。FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序。FreeMarkerj具备一定的编成能力,但一般java程序准备要显示的数据,都由FreeMarker生成页面,并通过模版显示准备的数据。FreeMarker不是一个Web应用框架,而更适合作为一个Web应用框架的一个组件。

2 FreeMarker的特性

1)通用性。能够按需要生成各种类型的文本,容易于嵌入到产品中,插件式模板载入器。

2)强大的模板语言。语法结构强大并且简单,支持常用的指令:if、elseif、else include等;在模板中创建和改变变量,可以在任何地方使用复杂表达式来指定值;支持宏运算,可加载参数,并支持宏嵌套。

3)通用数据模型。为了是开发者不受技术细节的打扰,你可以使用抽象的方式表示对象,告之模板开发者使用。FreeMarker并不直接反射到Java对象中,Java对象通常通过插件式对象封装,以变量方式在模板中显示。

4)智能的国际化和本地化。数字格式本地化敏感,多种不同语言的相同模板。

3 FreeMarker的用途

在软件开发的实际应用过程中,FreeMarker的用途大致如下。

1)作为模板输出不同的表现层。当后台数据对象和模板推送到FreeMarker模板引擎后,将自动被解析输出相应的前端表现,无论模板是怎样的表现,FreeMarker都可以完美的将动态数据解析输出,如此一来,我们可以通过简单的参数控制,将同一套业务数据输出到不同的模板,从而形成个性化的展示。

2)输出特定规格的数据。在不同的应用系统之间如果需要进行数据交换,一般可以采用XML数据格式,而一旦数据接口的规格确定,则必须按照约定的格式输出,此时FreeMarker可以作为输出XML规范数据的工具。

3)用于代码自动生成。当前流行的Java开发框架,有很多种,例如Struts,Spring,Hibernate,Ibatis等,基于这些框架开发,目的自然是为了提升开发效率,但不同的模板基本上都按相同的模式做重复的工作,为了进一步提升开发的效率,可以考虑将开发基于自动生成的代码再编辑,其效率将得到大幅提升。基于这些开发框架一般都有多个层次,例如:action,impl,service,dao,vo,templates,config,可以采用不同的模板装载这些模板,并根据开发框架的规范定义编码规范,从而轻松实现代码自动生成的功能。

4 FreeMarker的配置

使用FreeMarker框架之前,需要做一些配置工作,主要做做下面两件事。

1)复制freemarker.jar(在FreeMarker压缩文件包的lib目录中)到Web应用程序的WEB-INF/lib目录下。

2)将下面的代码添加到Web应用程序的WEB-INF/web.xml文件中。

freemarker

freemarker.ext.servlet.FreemarkerServlet

…………………

freemarker

*.ftl

完成此配置后,即可通过freemarker解析所有.ftl模板文件了。

5 模板应用实例

我们采用最简单的实例来说明FreeMarker的应用。例如:在用户登录后,显示欢迎信息。

Action层的Java代码:

UserVo user = (UserVo)Session.getAttribute(“user”);

//将用户对象推送到前端

Request.setAttribute(“user”,user);

……

//根据用户所选模板加载不同的模板

return new ActionForward("/"+user.getTemplateid()+".tpl");

模板文件,有多个不同的模板文件,列举两个模板文件的代码:

Tpl-001.tpl代码如下:

${user.getRealname()},欢迎您!

Tpl-002.tpl代码如下:

Hello, ${user.getRealname()}.

经过FreeMarker解析后,两个不同的用户看到的页面将分别是:

张三,他选择的模板是Tpl-001.tpl,他看到的界面是:张三,欢迎您!

Mary,她选择的模板是Tpl-002.tpl,她看到的界面是:hello,Mary.

很显然,同一套后台程序,由于采用FreeMarker不同的模板,而呈现不同的结果,满足了个性化的需求。

5 结束语

FreeMarker目前仍然在不断完善中,其灵活的语法,强大的嵌套解析,国际标准化与本地化兼容,堪称比JSP更快的性能保障,以及不断提升的安全性,让FreeMarker具有更强大的生命力,在Java开发中将发挥更大的作用。

参考文献

[1]曹扬.FreeMark模板技术在人事考试报名平台中的应用[J].信息与电脑(理论版),2012(07):118-119.

[2]周方.基于模板技术的网站内容管理系统的设计与实现[D].北京交通大学,2009.

[3]马春波.基于模板技术的J2EE应用代码自动化生成工具的设计与开发[D].复旦大学,2009.

[4]赵亚楠,董晶.模板技术在内容管理系统中的应用与实现[J].计算机工程与设计,2012(10).

上一篇:PLC在输油过程中的应用分析 下一篇:计算机局域网综合布线技术的研究