一、什么是Velocity

    Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上。Velocity 是 Apache 基金会的项目,开发的目标是分离 MVC 模式中的持久化层和业务层。但是在实际应用过程中,Velocity 不仅仅被用在了 MVC 的架构中,还可以被用在以下一些场景中。

  1Web 应用:开发者在不使用 JSP 的情况下,可以用 Velocity 让 HTML 具有动态内容的特性。

    2. 源代码生成:Velocity 可以被用来生成 Java 代码、SQL 或者 PostScript。有很多开源和商业开发的软件是使用 Velocity 来开发的。

    3. 自动 Email:很多软件的用户注册、密码提醒或者报表都是使用 Velocity 来自动生成的。使用 Velocity 可以在文本文件里面生成邮件内容,而不是在 Java 代码中拼接字符串。

    4. 转换 xml:Velocity 提供一个叫 Anakia 的 ant 任务,可以读取 XML 文件并让它能够被 Velocity 模板读取。一个比较普遍的应用是将 xdoc 文档转换成带样式的 HTML 文件。

详情参考:http://velocity.apache.org/engine/devel/overview.html


二、如何集成

    怎么用VM请移植官网去学习,这里仅介绍如何集成:

1、springMVC.xml配置文件中加入VelocityLayoutViewResolver视图解析器:

<!-- velocity  ViewResolver -->
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
   <property name="resourceLoaderPath" value="/WEB-INF/velocity/"/>
   <property name="configLocation" value="/WEB-INF/velocity.properties"/>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
   <property name="cache" value="true"/>
   <property name="prefix" value=""/>
   <property name="suffix" value=".vm"/>
   <property name="toolboxConfigLocation" value="/WEB-INF/velocityTools.xml" /><!--toolbox配置文件路径-->
   <property name="dateToolAttribute" value="date" /><!--日期函数名称-->
   <property name="numberToolAttribute" value="number" /><!--数字函数名称-->
   <property name="contentType" value="text/html;charset=UTF-8" />
   <property name="exposeSpringMacroHelpers" value="true" /><!--是否使用spring对宏定义的支持-->
   <property name="exposeRequestAttributes" value="true" /><!--是否开放request属性-->
   <property name="requestContextAttribute" value="req"/><!--request属性引用名称-->
   <property name="allowSessionOverride" value="true"/>
   <property name="allowRequestOverride" value="true"/>
   <property name="layoutUrl" value="layout.vm"/>
</bean>

2、所有视图文件均以.vm为结尾。

3、layout.vm为视图模板,即包含头和尾部等页面公共部分。在公共部分Body中最下面加入:

$!screen_content
</body>

4、其他vm文件中,只写变化的部分即可,系统通过springmvc配置文件配置以下属性:

<property name="layoutUrl" value="layout.vm"/>

这样就可使loyout.vm成为其它所有vm的模板。