一. 概念(译自官网)
Velocity是一个基于Java的模板引擎,它允许任何人使用这样一个简单而强大的模板语言引用Java代码中定义的对象。
当Velocity应用于Web开发时,Web designers和Java工程师在开发网站时能够依据MVC(Model-View-Controller)模型同时进行工作,这意味着Web页面设计师仅仅只需要专注于设计出美观的页面,而Java工程师也可以只专注于写出一流高效的代码。Velocity将Java代码从web页面中分离出来,使网站在其生命周期内更易维护,提供了一个相比JSP或PHP更为可行的方案。
Velocity的功能远超过了web的范围;它可以在模板中生成SQL,PostScript,XML。它既可以作为生成源代码和报告的实用程序使用,也可以作为其它系统的集成组件使用。例如,Velocity为各种web框架提供模板,使它们能够使用视图引擎从而依据真正的MVC模型开发web应用程序。
二 . Velocity语法
单行注释
## this is a comment### comments.....
多行注释
#* one two #*
函数宏定义。使用Velocity定义函数给其他模板调用
#macro(函数名 参数1 参数2)
#macro(macroName arg1 arg2 …) ... #end
函数中的内容会在被调用的地方显示
#macro( tablerows $color $somelist ) #foreach( $something in $somelist ) $something #end#end #set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] )#set( $color = "blue" )
3. 实例,在Maven项目中使用Velocity
1. 首先在pom文件中添加依赖
org.apache.velocity velocity-tools 2.0 servlet-api javax.servlet
2. 然后在WEB-INF目录下新建vm文件,这里有两种方式,一是直接在WEB-INF根目录下建立,这是velocity模板默认加载位置,二是在WEB-INF目录下自己再建一个模板目录,如果这样做的话就需要自己在velocity.properties文件中设置路径
3. 新建一个resources目录,配置velocity.properties文件和velocity-tools.xml文件
velocity.properties,里面可设置一些模板配置信息,如字符编码方式,模板加载路径等,也可不配置此文件
input.encoding=UTF-8output.encoding=UTF-8#resource.loader=webappwebapp.resource.loader.class=org.apache.velocity.tools.view.WebappResourceLoader#relative to the web context, has the same parent directory with WEB-INF#that is, vm and WEB-INF are sibling folderswebapp.resource.loader.path=/WEB-INF/templates/runtime.introspector.uberspect=org.apache.velocity.util.introspection.SecureUberspector# 允许在常规模板中定义宏velocimacro.permissions.allow.inline.to.replace.global=true
velocity-tools.xml,里面包含了对已预定义好的类的映射,配置好后在模板中就可以通过key直接调用类中的方法
4. 配置web.xml,这里因为只输出一个简单的页面,所以就直接使用了工具包里的VelocityLayoutServlet,也可以自己继承这个类进行开发,另外要将velocity.properties和velocity-tools.xml配置进去
Archetype Created Web Application Velocity org.apache.velocity.tools.view.VelocityLayoutServlet org.apache.velocity.toolbox velocity-tools.xml org.apache.velocity.properties velocity.properties Velocity *.vm userList.vm
在tomcat服务器上运行就可以输出开始编写的vm页面了
4. 参考文章
官网:
Velocity的宏定义实例: