软件项目实训及课程设计指导——如何在Web应用系统表示层开发实现中应用Velocity模板技术
1、分离Web表示层的数据处理和展现逻辑的常见的应用技术
分离Web表示层的数据处理和展现逻辑是目前企业级的Web应用系统开发中表现层组件开发实现中的基本实现目标。为此,软件应用系统的设计和开发实现人员必须要寻找到一种能够减少软件开发人员重复劳动的方法,让程序员将更多的精力放在业务逻辑以及其它更加具有创造力的工作上。
因此,读者在课程设计的项目开发中,不应该在Web页面中出现包含大量的服务器端脚本程序代码的Web页面状况,这样的Web应用系统在后期的系统维护、升级中都会比较困难。
如下示图所示的程序代码示例是不良好的Web表示层程序实现的代码示例,因为不仅在Web页面(*.jsp)中包含有大量的Java程序脚本的代码,而且在JSP页面中直接访问数据库(没有合理地进行分层设计)和应用System.out.print控制台信息的输出语句(此语句只能将信息打印输出到服务器主机的系统控制台上而不能输出到Web浏览器中,前端用户根本就无法浏览到相关的信息)。
希望读者在学习和阅读作者的《软件项目实训及课程设计指导》系列文章的内容时,重点掌握目前比较主流的分离Web表示层的数据处理和展现逻辑的技术实现方法——比如,采用CSS+Div分离Web表示层数据和表现、应用XML+XSLT技术彻底分离数据和样式、应用Velocity模板技术实现开发职责分离,并能够在课程设计的项目开发中应用作者在本系列文章中介绍的各种方法。
当然,分离Web表示层的数据处理和展现逻辑目前其实有多种不同的实现方式,不仅仅局限于作者在上文中所提及和介绍过的方法,比如同样很优秀的Freemarker也获得了非常广泛的应用。因此,读者在项目开发实现中应该要根据项目的具体需要和自己对具体技术实现的熟悉程度合理地选用。
作者在下文中将为读者介绍如何在J2EE系统平台中的Web应用系统表示层开发实现中应用Velocity模板技术。但作者考虑到Velocity模板技术以及随后几篇文章中将要介绍的Struts和Struts2应用框架等技术在目前高校的课堂教学中一般都不会涉及,因此部分读者可能在阅读本系列文章的内容时对Velocity模板技术和Struts2应用框架会感觉比较陌生,给读者的学习和理解会带来一定的难度。
作者建议读者在课程设计的项目开发中能够应用Velocity模板技术,经过一段时间的项目开发和应用的实践,也就能够慢慢地熟悉和掌握Velocity模板技术和Struts2应用框架等应用技术。
2、什么是J2EE系统平台中的Velocity模板技术
Velocity是Apache基金会的一个开源的模板引擎项目,其初始开发的主要目标是分离基于MVC体系架构设计模式的应用系统的持久化层和业务层,但目前被广泛地应用于J2EEWeb应用系统中的表示层组件开发中。它能够允许Web开发者在不使用传统的JSP页面的应用情况下,可以用Velocity模板让HTML页面也能够具有动态内容的特性。
如下示图为ApacheVelocity的官方网站页面中对Velocity模板相关技术特性和应用介绍的文字局部截图。
读者可以从Velocity的官方网站上下载Velocity的系统运行包文件和技术参考文档等系统库和资料,然后再解包该系统库的运行包文件,请见下图所示的下载页面。
Velocity是一种基于Java系统平台的模板引擎,它允许软件应用系统的开发人员使用简单而强大的模板语言来引用哪些定义在Java程序代码中的对象。而且Velocity应用具有简洁的语法和采用类似脚本语言的方式引用目标数据对象。
Velocity模板引擎本身不是采用标准的模型视图控制器(MVC)体系结构设计,它只是Web应用系统中的“模型组件”和“视图组件”之间的桥梁。并为Web页面的前端开发和制作人员提供了一种清晰而又简单的模板语法,而且模板和程序代码是分离的。
所以Web应用系统的开发人员可以分别独立地开发和维护它们,Web前端开发人员可以和后端Java程序开发人员同步开发一个遵循MVC体系架构的Web应用系统。而且目前的Velocity模板引擎也很容易能够集成到J2EEWeb容器的运行环境中——如Servlet容器中,也很容易能够与Struts应用框架和Struts2应用框架相互集成。
因为Velocity模板引擎的强大之处在于它严格地区分Web应用系统项目开发中的人员职责划分——页面开发人员只需要把精力和