快速业务通道

用Java程序生成文本的捷径 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
不懂得编程,从长远来看,避免他们接触复杂的编程环境相当于节省了你自己的时间。

许多模板引擎的用户相信,在采用模板引擎的方案中,控制器部分和视图部分的明确分离,再加上模板引擎固有的安全机制,使得模板引擎足以成为其他内容发布系统(比如JSP)的替代方案。因此,Java模板引擎最常见的用途是替代JSP也就不足为奇了。

用Java程序生成文本的捷径(4)

时间:2009-11-09 仙人掌工作室

HTML处理

由于人们总是看重模板引擎用来替换JSP的作用,有时他们会忘记模板还有更广泛的用途。到目前为止,模板引擎最常见的用途是处理HTML Web内容。但我还用模板引擎生成过SQL、email、XML甚至Java源代码。在这里我只能涉及模板的部分应用,但你可以从本文最后的参考资源找到更多的例子。

我将在下面的HTML例子中使用前面email例子的数据模式。这个HTML页面是一个假想的企业Intranet页面,它显示出客户帐户的详细信息。本例中的控制器类是一个Java Servlet,视图部分则包含一个HTML模板。下面的代码显示了Servlet类中最主要的代码。为使这个例子更具有代表性,我从头开始手工编写这个Servlet。然而,一般情况下,模板会提供一些Servlet工具,帮助用户减轻一些编写代码的负担。

// 装入模板 Template template = Velocity.getTemplate("html.vm"); // 创建环境 VelocityContext context = new VelocityContext(); context.put ("customers",Customer.getCustomers()); // 解析模板,输出应答 ServletOutputStream output = response.getOutputStream(); Writer writer = new OutputStreamWriter (output); template.merge(context, writer); writer.flush();

这个例子也没有什么令人惊异的地方。和前面的例子一样,我只是把必需的对象加入到VelocityContext,然后输出解析模板的结果。但是请注意,在前面的例子中,我只把一个Customer加入到VelocityContext,这里加入到VelocityContext的却是一组Customer对象。我可以用#foreach指令迭代访问所有的Customer对象。下面是相应的HTML模板:

<html> <body> <h1>客户报告</h1> #foreach ($customer in $customers) <h2>$customer.CustName<h2> <table> #foreach ($transaction in $customer.Transactions) <tr> <td width="200"> $transaction.Date </td> <td width="150"> $transaction.Description </td> <td width="100"> $transaction.Amount </td> </tr> #end </tr> <td></td> <td></td> <td><b>$customer.AccountTotal</b></td> <tr> </table> #end </body> </html>

如果你正在规划一个工程,这个工程的需求远远超过几个HTML模板,请考虑众多以模板为基础的框架之一。这些框架不仅为生成HTML提供了模板引擎所带来的便利,而且提供许多实用工具,比如数据库连接池和安全。两个常见的例子是Turbine和Melati,它们都和Velocity以及WebMacro兼容,都是免费且源代码开放的产品。

性能和配置

对于大多数程序来说,模板的速度看来已经足够快;但对于大容量的Web网站,你可能要认真地考虑一下性能问题。在性能方面,模板引擎最大的特点在于模板缓冲。在模板缓冲机制的作用下,模板不再是每次出现请求的时候从磁盘读取,而是以最理想的方式在内存中保存和解析。在开发期间,模板缓冲通常处于禁用状态,因为这时请求数量较少,而且要求对页面的修改立即产生效果。部署完毕之后,模板一般不再改变,性能就成了优先考虑的问题。因此,这时你应该启用模

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号