Velocity模板概念及簡單使用

一.  概念(譯自官網)java

Velocity是一個基於Java的模板引擎,它容許任何人使用這樣一個簡單而強大的模板語言引用Java代碼中定義的對象。web

當Velocity應用於Web開發時,Web designers和Java工程師在開發網站時可以依據MVC(Model-View-Controller)模型同時進行工做,這意味着Web頁面設計師僅僅只須要專一於設計出美觀的頁面,而Java工程師也能夠只專一於寫出一流高效的代碼。Velocity將Java代碼從web頁面中分離出來,使網站在其生命週期內更易維護,提供了一個相比JSP或PHP更爲可行的方案。apache

Velocity的功能遠超過了web的範圍;它能夠在模板中生成SQL,PostScript,XML。它既能夠做爲生成源代碼和報告的實用程序使用,也能夠做爲其它系統的集成組件使用。例如,Velocity爲各類web框架提供模板,使它們可以使用視圖引擎從而依據真正的MVC模型開發web應用程序。api

二 .  Velocity語法tomcat

單行註釋服務器

## this is a comment

### comments.....

多行註釋app

#*
   one
   two  
#*

函數宏定義。使用Velocity定義函數給其餘模板調用框架

#macro(函數名 參數1 參數2)webapp

#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文件中設置路徑

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

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

相關文章
相關標籤/搜索