中,它的内容如下:
<html>
<head>
<title>Test application</title>
</head>
<body>
Application to test the possibilities of
WebLEAF 3.0b + Groovy + HSQLDB
<br />
<ul>Test these urls:
<li>
<a href="showItems.fm?showXMLSource=true">
Listing items in the database as XML with Groovy
</a>
<ul><b>Notes</b>
<li>The LABELS node comes from the file at
<i>WEB-INF/xml/Labels.xml</i>
</li>
<li>The ITEM_QUERY node is generated using the Groovy script at
<i>WEB-INF/scr/Item.groovy</i>
</li>
</ul>
</li>
<li><a href="showItems.fm">
Listing items in the database with Groovy + FreeMarker
</a>
</li>
<li><a href="showItems.xsl">
Listing items in the database with Groovy + XSLT
</a>
</li>
</ul>
</body>
</html>

我们输入URL: http://localhost:8080/test/来访问程序,界面如图4所示:

图4:应用程序的首页
七、结论
现在我们已经做完了所有的工作,在我们的应用程序中,我们可以直接修改商业逻辑(Item.groovy),或更改视图的实现(Item.ft/Main.ftl或Item.xsl和Labels.xml)。而并不需要重新编译或重新启动Servlet容器。我们的变化会自动更新。
也许我们应该感谢XML,通过它可以重用很多Java库,如动态地使用SVG和Batik,PDF报表(基于XMLDataSource的JasperReports)等。
通过上述的例子我们可以得出一个结论,不同的视图技术并不互相排斥。如果你喜欢XLST,就可以生成一个纯文本的文档(象一个AJAX请求的JSON响应一样),你可以很容易地重用同样的商业逻辑、操作和实现,就象FreeMarker一样。
最后,我们使用了Groovy作为脚本引擎,也许我们应该感谢Groovy工程,正因为有了它,我们才可以在Java中使用其他的脚本语言,而这一切只需要简单地变化文件的XML_SOURCE 即可。感兴趣的读者可以试试使用Jython或PHP来实现这个应用。