整合Java 6脚本、Groovy实现动态 MVC模式(一)
四、使用FreeMarker实现视图
到现在为止,我们已经实现了商业逻 辑,在这一节中让我们来向程序中加入视图。作为首选, 我们来使用FreeMarker来实现这个视图,我们要做的第一件事就是下载 FreeMarker库,并将freemarker.jar放到 Test\WEB-INF\lib中。为了在FreeMarker中使用 XPath表达式来处理XML,我们使用一个 XSLT引擎:Jaxen,因此,我们需要下 载这个Jaxen,并将所有满足jaxen-*.jar的文件复制到 Test\WEB-INF\lib中。
然后,我们 需要编辑WebLEAF配置文件(Test\WEB-INF\Test.leaf.conf),这个配置很简单,只要在XMLOPERATION中加一个属性 即可(FM_TEMPLATE="item.ftl") ,WebLEAF配置文件的内容如下:
<?xml version="1.0" encoding="iso-8859- 1"?> <!DOCTYPE WADSET SYSTEM "http://www.uib.es/leaf/LEAFwad.dtd"> <WADSET> <WAD NAME="Test" INIT_MODE="INITS_ON_START_UP" XML_ALLOW_SHOW="TRUE" XSLT_NO_CACHE="TRUE" > <OPERATIONSET> <SUFFIX VALUE="fm"/> <XMLOPERATION NAME="showItems" DESCRIPTION="Shows all the items and the selected one" CLASSNAME="org.leaf.XMLOperation" FM_TEMPLATE="item.ftl" > <SOURCES GLOBAL_TAG="XML_APP" > <SOURCE XML_SOURCE="xml/Labels.xml"/> <SOURCE XML_SOURCE="script://scr/Item.groovy/show?w_"/> </SOURCES> </XMLOPERATION> </OPERATIONSET> </WAD> </WADSET>
然后我们在 Test\WEB-INF在建立一个templates目录,并在其中 加入两个文件(item.ftl和main.ftl),item.ftl的内容如下:
main.ftl的内容如下:
<#-- Direct handle for the labels --> <#assign Labels = doc.XML_APP.LABELS[0]> <#-- Main reusable macro to create each page --> <#macro Main_Page> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>${Labels.@Title}${Title} (FREEMARKER)</title> <meta http-equiv="Expires" content="now"/> <meta http-equiv="Pragma" content="no-cache"/> <meta http-equiv="Cache-Control" content="private"/> </head> <body> <#nested> <a href="./">Back to index</a> </body> </html> </#macro>
下面我们来启动Servlet容器,并输入URL:http://localhost:8080/test/showitems.fm。然后我们会看到如图2的界面:
图2 由FreeMarker产生的演示项目列表的程序界面
如果我们选择其中一项,我们会看到它的数据,如图3所示:

图3 由FreeMarker产生的显示项目细节的应用程序界面
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- 脚本攻击和防范 (2366篇文章)
- Java环境安装配置 (5640篇文章)
- Java编程开发手册 (8291篇文章)
- J2SE综合:浅谈java程序发布之 jre 篇 (11次浏览)
- JAVA代码中使用魔法数值 (8次浏览)
- Hibernate缓存管理 (6次浏览)
- JAVA代码应该流畅和结构化 (5次浏览)
- Java JVM设置对性能的影响 (4次浏览)
- 开发框架:深入了解 Struts Validator (3次浏览)
- Java中的通信机制及与C/C API的集成 (1次浏览)
- 用Hibernate实现领域对象的自定义字段 (1次浏览)
- Java语言入门 简述Java语言回收机制 (0次浏览)
- 2008年Java开发者最迫切的五个期望 (0次浏览)




