Velocity模板概念及简单使用

一.  概念(译自官网)

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 )
      <tr><td bgcolor=$color>$something</td></tr>
  #end
#end
 
 
#set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] )
#set( $color = "blue" )
<table>
    #tablerows( $color $greatlakes )
</table>

3. 实例,在Maven项目中使用Velocity

1. 首先在pom文件中添加依赖

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-tools</artifactId>
    <version>2.0</version>
    <exclusions>
        <exclusion>
            <artifactId>servlet-api</artifactId>
            <groupId>javax.servlet</groupId>
        </exclusion>
    </exclusions>
</dependency>

2. 然后在WEB-INF目录下新建vm文件,这里有两种方式,一是直接在WEB-INF根目录下建立,这是velocity模板默认加载位置,二是在WEB-INF目录下自己再建一个模板目录,如果这样做的话就需要自己在velocity.properties文件中设置路径

72b5476551d67af65411221b893884fc5fa.jpg

3. 新建一个resources目录,配置velocity.properties文件和velocity-tools.xml文件

d37dfa742b9d5f4255c3fe7f1b265b4ca31.jpg

velocity.properties,里面可设置一些模板配置信息,如字符编码方式,模板加载路径等,也可不配置此文件

input.encoding=UTF-8
output.encoding=UTF-8
#resource.loader=webapp
webapp.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 folders
webapp.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直接调用类中的方法

<?xml version="1.0" encoding="utf-8"?>
<tools>
    <toolbox scope="request">
        <tool key="userList" class="com.yuchen.space.action.UserListAction"/>
    </toolbox>
</tools>

4. 配置web.xml,这里因为只输出一个简单的页面,所以就直接使用了工具包里的VelocityLayoutServlet,也可以自己继承这个类进行开发,另外要将velocity.properties和velocity-tools.xml配置进去

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>Velocity</servlet-name>
    <servlet-class>org.apache.velocity.tools.view.VelocityLayoutServlet</servlet-class>

    <init-param>
      <param-name>org.apache.velocity.toolbox</param-name>
      <param-value>velocity-tools.xml</param-value>
    </init-param>

    <init-param>
      <param-name>org.apache.velocity.properties</param-name>
      <param-value>velocity.properties</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>Velocity</servlet-name>
    <url-pattern>*.vm</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>userList.vm</welcome-file>
  </welcome-file-list>
</web-app>

在tomcat服务器上运行就可以输出开始编写的vm页面了

4.  参考文章

官网:http://velocity.apache.org/

Velocity的宏定义实例:https://www.oschina.net/code/snippet_12_189

转载于:https://my.oschina.net/u/4057396/blog/3021628

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值