APP下载

开源模板引擎Freemarker在交通地理信息系统中的应用

2015-10-21宋全记

建筑工程技术与设计 2015年29期

宋全记

【摘要】本文分析了开源模板引擎Freemarker技术,改进了交通地理信息系统的实现方法,阐述了开发过程中划分模板和数据模型的方法,给出了Freemarker技术的具体实现步骤并加以改进,以解决交通地理信息系统开发过程中遇到的问题。

【关键词】交通地理信息系统,Freemarker,Struts,Spring

经济全球化、一体化给人们带来机遇的同时也带来了挑战,新技术、新理念层出不穷,企业之间的竞争也日趋激励。随着JSP技术的产生和发展,改变了HTML技术仅提供静态页面的历史,使得人们可以有更佳的用户体验和更高的参与程度[1]。但是Web项目数量繁多、种类多样、更新频繁的特点,也给其设计、使用带来一定困难。

Freemarker是一个基于Java的开源模板引擎,它可以实现数据显示与数据模型的分离。通过Freemarker可以方便、快捷的划分MVC设计模式中的模型层与视图层。本文给出交通地理信息系统中集成Freemarker技术的具体步骤,并对其实际应用中的不足加以改进。

一、交通地理信息系统

地理信息系统(GIS,Geographic Information System)是通过计算机硬件、软件技术,对地表空间地理数据进行处理的技术系统;而交通地理信息系统(GIS-T,Geography Information System -Transportation),则是GIS在交通领域的具体应用[2]。

在GIS-T中,服务器端需要对地理数据进行采集、存储、管理、分析和运算,浏览器端则需要对以上数据进行显示和描述。为了减少开发难度,可以通过Freemarker将业务逻辑代码和交互显示代码分离。本文以GIS-T注册模块为例阐述Freemarker模板引擎的应用。好的注册系统可以给用户带来更佳的体验,是Web项目成功的第一步。

二、开源模板引擎Freemarker简介

开源模板引擎Freemarker由于功能强大、方便简单、可读性好在Web项目中被广泛使用[3]。Freemarker具有强大的模板语言,通用的数据模型,Web开发支持,可国际化或本地化,以及强大的XML编程能力[4]。Freemarker的目标是可生成任何格式的文本,方便的嵌入到Web项目中,可插入的模板载入器,并用生成的文本做任何想做的事情(存储,E-mail,信息反馈等)。开发人员能够通过Freemarker方便、快捷的划分MVC设计模式中的模型层与视图层,使得Web项目真正可以并行开发。

三、GIS-T注册模块中Freemarker技术的集成及改进

用于开发J2EE的Eclipse插件很多,MyEclipse的功能非常强大,尤其支持各种开源产品,因此本文选用MyEclipse8.5进行GIS-T开发。GIS-T注册模块中开源模板引擎Freemarker技术集成具体步骤如下:

1.添加JAR包。创建Web项目,在项目中添加freemarker.jar,并在web.xml文件中配置Freemarker相关信息。

2.编写模板,即编写ftl文件。简单的注册功能视图层可由reg.ftl、succ.ftl和fail.ftl三个文件完成,分别负责收集信息和显示处理结果。同html、jsp文件一样,ftl文件也可以将公共显示部分(标题,Logo,版权信息等)提取出来,放在同一个文件中以供其他文件调用。

3.编写数据模型。通常可用JavaBean定义、存储变量,Freemarker能够根据Servlet容器提供的数据识别相应的变量值。因此模板与数据模型是相互独立的,Model层与View层的划分非常明确,方便整个Web项目并行开发。

4.编写控制器。采用Struts或Spring等框架技术,完成Controller层的开发,对于数据库可采用Hibernate框架技术实现对象持久化操作,并对整个Web项目进行调试。

Freemarker的操作指南中介绍了模板和数据模型的定义和应用[5]。模板内容包括指令、表达式和插值,数据模型内容包括标量、容器、方法、指令、节点变量和对象包装。虽然两处均有指令定义,但作用是完全不同的,模板处的指令用于在ftl页面显示的控制,数据模型处的指令用于在Java程序中加入数学运算、逻辑处理、控制语句等。

从Freemarker以上开发步骤及操作指南中可以看出,Freemarker采用强行划分的方式将模型层与视图层分离。以往使用JSP技術开发Web页面时,开发人员往往习惯在页面中加入数学运算、逻辑处理或控制语句,这使得页面美工设计经常不能读懂代码,页面在开发人员与美工设计之间频繁交接,增加了项目开发的时间与成本。Freemarker没有提供Java语言的所有功能,这样开发人员只能在模型层或控制层实现数学运算、逻辑处理或控制语句。目前,可以JSP、Freemarker两种技术共存,简单的视图页面采用JSP技术,复杂的视图页面采用Freemarker技术,这样既可以发挥JSP技术强大的优势,又可以避免复杂项目视图页面Model层与View层难以划分的尴尬。

MVC框架Struts2.x[6]吸取了WebWork的优势,改进了Struts1.x的不足,尤其增强了Spring集成技术,对POJO Forms和POJO Actions也做了相应的改进,这使得其更易于同Freemarker框架集成。对于注册模块,另一个重要的内容就是其安全机制,它包括认证和授权两方面内容。目前在SSH2框架中比较流行的是Spring Security[7]技术,它易于采用Spring依赖注入,不侵入系统或项目,可集成框架结构,以及其优秀的综合认证服务,是SSH2框架安全机制的首选。

四、结论

本文分析了GIS-T注册模块的功能,采用Freemarker技术实现注册模块,给出了GIS-T中集成Freemarker框架技术的具体步骤,阐述了Freemarker框架划分Model层与View层的基本思想,对项目开发过程中使用的Freemarker技术进行了改进,并应用于实际的GIS-T注册模块中,取得了良好的效果。

参考文献:

[1] 北大青鸟.开发基于SSHA的网上信息发布平台[M],科学技术出版社,2008:211-225.

[2] 桂岚,李跃军.组件式交通地理信息系统设计与开发[J],长安大学学报,2002, 22:24-27.

[3] 覃庆炎,张伟.Java开源项目SSH项目开发详解[M],清华大学出版社,2008:314-330.

[4] Freemarker-Features,http://www.freemarker.org/features.html,2011.

[5] Freemarker-Manual,http://sourceforge.net/projects/freemarker/files/chinese-manual,2011.

[6] Apache Struts2,http://struts.apache.org/2.2.3/index.html,2011.

[7] Spring Security,http://static.springsource.org/spring-security/site/features.html,2011.