Velocity 模板基本用法
2017-04-27 17:17
288 查看
Velocity是一个基于java的模板引擎。它允许任何人仅仅简单的使用模板语言来引用由java代码定义的对象。
当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提 供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。
2.在Spring-mvc.xml中配置Velocity
velocity.properties
也可以直接在xml中配置
如:#set、#if 、#else、#foreach、#end、#include、#parse、#macro等。
2.”$”用来标识一个对象(或理解为PHP的变量)
如:i、i、user等。
3.”{}”用来明确标识Velocity变量,和普通模版字符串区分开来;
如:${user}‘s age 可以显示为 riqi’s age。
4.”!”强制把不存在的变量显示为空白。
如:!msg,假如msg对象为空,则模版中不显示该变量;如果缺少”!”,则显示!msg,假如msg对象为空,则模版中不显示该变量;如果缺少”!”,则显示msg字符串,这是我们不想要的结果。
5.变量的定义和赋值。不需要指定变量的类型,类似弱类型语言PHP可以随意指定,在赋值后自动判定变量的类型,如:
6.数组循环:
users可以是Vector、Hashtable或者Array,Velocity提供了得到循环次数的值:users可以是Vector、Hashtable或者Array,Velocity提供了得到循环次数的值:velocityCount。
7.语句注释:
单行注释:## 单行注释代码
多行注释:#* 多行注释代码 *#
8.模版支持关系和逻辑操作符运算,如:&&、||、! 等
9.宏定义:#macro ,类似PHP声明一个函数,其中有函数名称和参数列表。先定义再调用。
10.终止命令:#stop,类似PHP的exit(); 停止执行模板引擎并返回。
11.引入公共模版文件:#include与#parse,它们的差异是:
(1) 与#include不同的是,#parse只能指定单个对象。而#include可以有多个
如果您需要引入多个文件,可以用逗号分隔就行:
在括号内可以是文件名,但是更多的时候是使用变量的:
(2) #include被引入文件的内容将不会通过模板引擎解析;
#parse引入的文件内容Velocity将解析其中的velocity语法并移交给模板,意思就是说相当与把引入的文件copy到文件中。
(3) #parse是可以递归调用的。
12.转义字符’\’.
这个和其它语言没有差异,假如:user=”riqi”;那么,user表示输出user="riqi";那么,user表示输出user字符串,$user表示输出\riqi。
13.Velocity内置了一部分java对象 如:request、request、response、$session等,在vm模版里可以直接调用。
细节整理:
Velocity判断某个变量是否为空的方式:
或者:
例子
当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提 供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。
SpringMVC整合Velocity
1.添加依赖<dependency> <groupId>velocity</groupId> <artifactId>velocity</artifactId> <version>${velocity.version}</version> </dependency> <dependency> <groupId>org.apache.velocity</groupI 4000 d> <artifactId>velocity-tools</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency>
2.在Spring-mvc.xml中配置Velocity
<bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="/WEB-INF/velocity/" /><!-- 模板存放的路径 --> </bean> <bean id="velocityLayoutViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="suffix" value=".vm"/> </bean>
velocity.properties
#encoding input.encoding=UTF-8 output.encoding=UTF-8 #autoreload when vm changed file.resource.loader.cache=false file.resource.loader.modificationCheckInterval=2 velocimacro.library.autoreload=false
也可以直接在xml中配置
<bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="configLocation" value="classpath:velocity.properties"/> <property name="velocityProperties"> <props> <prop key="directive.foreach.counter.name">loopCounter</prop> <prop key="directive.foreach.counter.initial.value">0</prop> <prop key="input.encoding">utf-8</prop><!-- 指定模板引擎进行模板处理的编码 --> <prop key="output.encoding">utf-8</prop><!-- 指定输出流的编码 --> </props> </property> </bean>
基本用法
1.”#”用来标识Velocity的脚本语句。如:#set、#if 、#else、#foreach、#end、#include、#parse、#macro等。
2.”$”用来标识一个对象(或理解为PHP的变量)
如:i、i、user等。
3.”{}”用来明确标识Velocity变量,和普通模版字符串区分开来;
如:${user}‘s age 可以显示为 riqi’s age。
4.”!”强制把不存在的变量显示为空白。
如:!msg,假如msg对象为空,则模版中不显示该变量;如果缺少”!”,则显示!msg,假如msg对象为空,则模版中不显示该变量;如果缺少”!”,则显示msg字符串,这是我们不想要的结果。
5.变量的定义和赋值。不需要指定变量的类型,类似弱类型语言PHP可以随意指定,在赋值后自动判定变量的类型,如:
#set($username="riqi") ##设置用户名 #set($age=26) ##设置年龄
6.数组循环:
#foreach ($user in $users) $!{user} $!{velocityCount} <br /> #end
users可以是Vector、Hashtable或者Array,Velocity提供了得到循环次数的值:users可以是Vector、Hashtable或者Array,Velocity提供了得到循环次数的值:velocityCount。
7.语句注释:
单行注释:## 单行注释代码
多行注释:#* 多行注释代码 *#
8.模版支持关系和逻辑操作符运算,如:&&、||、! 等
9.宏定义:#macro ,类似PHP声明一个函数,其中有函数名称和参数列表。先定义再调用。
10.终止命令:#stop,类似PHP的exit(); 停止执行模板引擎并返回。
11.引入公共模版文件:#include与#parse,它们的差异是:
(1) 与#include不同的是,#parse只能指定单个对象。而#include可以有多个
如果您需要引入多个文件,可以用逗号分隔就行:
#include ("one.gif", "two.txt", "three.htm" )
在括号内可以是文件名,但是更多的时候是使用变量的:
#include ( “greetings.txt”, $seasonalstock )
(2) #include被引入文件的内容将不会通过模板引擎解析;
#parse引入的文件内容Velocity将解析其中的velocity语法并移交给模板,意思就是说相当与把引入的文件copy到文件中。
(3) #parse是可以递归调用的。
12.转义字符’\’.
这个和其它语言没有差异,假如:user=”riqi”;那么,user表示输出user="riqi";那么,user表示输出user字符串,$user表示输出\riqi。
13.Velocity内置了一部分java对象 如:request、request、response、$session等,在vm模版里可以直接调用。
细节整理:
Velocity判断某个变量是否为空的方式:
#if($!变量名)……#else……#end
或者:
#if("" == $!varName)……#else……#end
例子
package controller; import model.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * VelocityController * Velocity模板引擎 * Created by heqianqian on 2017/4/27. */ @Controller @RequestMapping("/velocity") public class VelocityController { @RequestMapping("/show") public String show(Map<String, Object> map) { List<User> userList = new ArrayList<User>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (int i = 0; i < 10; i++) { us fb04 erList.add(new User(i, "hqq" + i)); } map.put("userList", userList); return "show"; } }
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>Show</title> </head> <body> <h1>Velocity</h1> <hr/> <h2>1. "#"用来标识Velocity的脚本语句。</h2> <h3>1.1 \#set</h3> #set($username="riqi") #set($age=26) 用户名: $username 年龄: $age <h3>1.2 \#if</h3> #if($age>18) $username is not teenager #else $username is teenager #end <h3>1.3 \#foreach</h3> <ul> #foreach($user in $userList) <li>$user.id:$user.name</li> #end </ul> <h3>1.4 \#include</h3> #include("../file/note.txt") </body> </html>
相关文章推荐
- NVelocity的基本用法
- 轻松学习Velocity - Velocity基本用法和常用的用法
- [js高手之路]Node.js模板引擎教程-jade速学与实战1-基本用法
- 模板字符串的基本用法
- velocity基本用法
- velocity模板引擎的基本语法(个人实际编写的例子)
- 关于模板引擎handlebars.js基本用法
- 【Velocity模板引擎】前端页面#if...#elseif...#end语句用法
- velocity模板引擎基本语法
- velocity基本用法
- (二)模板引擎之Velocity脚本基本语法全
- (二)模板引擎之Velocity脚本基本的语法全
- velocity模板的基本知识
- 【转载】Velocity模板引擎的介绍和基本的模板语言语法使用
- jade模板基本用法
- Java模板引擎Velocity基本语法
- 06 C++中类、函数、成员模板基本用法
- js模板引擎之 Handlebars 基本用法
- 关于模板引擎handlebars.js基本用法
- Velocity的基本用法