Velocity 模板引擎在复杂邮件业务中的简单举例
来源:互联网 发布:怎么预测时间序列数据 编辑:程序博客网 时间:2024/05/16 03:25
Velocity是apache组织下的一个基于java的模板引擎(template engine),而这种Apache velocity 模板引擎的简单使用可以更好的将样式设计和java开发分离开来。
举个简单例子,在给一些客户发送邮件时,邮件正文往往带有一些较规范的表格或链接,而在发送邮件时,我们当然可以在java代码中写正文时加入html标签修饰达到如下目的:
但如果在业务上遇到更为复杂,项目较为庞大,这就要求项目组分工较为明确,而此时的邮件开发人员(java开发)对表单设计并不在行,换句话说java开发人员在开发邮件发送功能时即便花费较长时间用在利用html标签来修饰邮件正文内容,但其也很难达到专业的Web designers设计出来的水平。那么最能达到用户要求的方式是什么呢?是让每个人仅作自己最擅长的事情:java开发人员仅作邮件功能,web designer仅作邮件的类似web表单的正文。
上面所示的邮件中的表格(table)及其中的样式和连接(<a></a>)效果是web designer使用html实现的一个模板,而java开发人员则提供了相关表格(table)单元格填充所需要的内容,模板引擎利用模板语言将两者进行完美结合,最终形成一个美观邮件内容。Velocity则提供了这种方式的实现,如下图所示:
Velocity提供的这种方式的实现,其思想来源于MVC。Web designer设计好一个模板,里面使用html标签和模板语言(Velocity Template Language),而velocity模板引擎起到了控制作用,java开发人员只需要将相关数据作为一个map或其他变量等信息提供给这个模板,即可完成相关工作。代码示意如下所示:
模板:templateDemo.vm:
</head><center><TABLE width=850 border=1 bordercolor="#000000" id="tabID"><TBODY align="left"><TR rowspan="2"><TD colSpan=4><B><FONT color=blue>$map.get("applyFormId")</FONT></B></TD></TR><TR><TD align=middle colSpan=4><FONT size=5><B>templateDemo</B></FONT></TD></TR><TR><TD nowrap width="140"><B>标题:</B></TD><TD> $map.get("Name")</TD><TD nowrap><B>关键词</B></TD><TD> $map.get("key")</TD></TR></TBODY></TABLE></center></html>
VelocityEngine的使用
VelocityEngine ve = new VelocityEngine();ve.setProperty(Velocity.RESOURCE_LOADER, "class");ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); // 设置类路径加载模板ve.setProperty(Velocity.INPUT_ENCODING, "utf-8");// 设置输入字符集ve.setProperty(Velocity.OUTPUT_ENCODING, "utf-8");// 设置输出字符集ve.init();// 初始化模板引擎Template t = ve.getTemplate("/templateDemo.vm");// 加载模板,相对于classpath路径VelocityContext context = new VelocityContext();HashMap<String, Object> result = new HashMap<String, Object>();result.put("Name", "模板");result.put("Key", "语言");context.put("map", result);StringWriter writer = new StringWriter();t.merge(context, writer); // 转换writer.toString();//形成最终结果
虽然模板引擎不仅仅使用在复杂的邮件内容的业务上,但这个简单例子让我们体会到了界面和业务数据分离的实现方式,这也是模板引擎的主要作用,即它可以让界面与数据分离,从而大大提高开发效率,也使得项目更加容易重用优良的界面设计。
- Velocity 模板引擎在复杂邮件业务中的简单举例
- velocity模板在spring中的简单配置
- velocity模板在spring中的简单配置
- Velocity模板引擎的简单使用
- Velocity模板引擎的简单使用
- Velocity模板引擎的简单使用
- velocity模板引擎简介
- velocity 模板引擎
- Velocity模板引擎
- 【工具】模板引擎 Velocity
- Velocity模板引擎入门
- 模板引擎 Velocity
- Velocity 模板引擎介绍
- 模板引擎 Velocity
- velocity模板引擎处理
- Java模板引擎---Velocity
- Velocity模板引擎
- Velocity 模板引擎介绍
- Fedora5下构造内核树 .
- 讲述C++中调用Python脚本
- BASH命令和SHELL脚本总结(5)赋值篇
- Unicode UTF-8 Ansi 互转及MultiByteToWideChar和WideCharToMultiByte用法等编码相关
- 液晶DID、等离子显示器、DLP背投技术对比
- Velocity 模板引擎在复杂邮件业务中的简单举例
- 前端优化
- [C#]GDI+在鼠标移动(MouseMove)时画平滑曲线
- BASH命令和SHELL脚本总结(6)括号篇
- iOS应用程序状态切换相关
- wodediyike
- 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- BASH命令和SHELL脚本总结(7)判断篇
- GCC常用选项