博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Velocity 模板基本用法
阅读量:4209 次
发布时间:2019-05-26

本文共 3607 字,大约阅读时间需要 12 分钟。

Velocity是一个基于java的模板引擎。它允许任何人仅仅简单的使用模板语言来引用由java代码定义的对象。

当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提 供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。

SpringMVC整合Velocity

1.添加依赖

velocity
velocity
${velocity.version}
org.apache.velocity
velocity-tools
2.0
org.springframework
spring-context-support
${spring.version}

2.在Spring-mvc.xml中配置Velocity

velocity.properties

#encodinginput.encoding=UTF-8output.encoding=UTF-8#autoreload when vm changedfile.resource.loader.cache=falsefile.resource.loader.modificationCheckInterval=2velocimacro.library.autoreload=false

也可以直接在xml中配置

loopCounter
0
utf-8
utf-8

基本用法

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} 
#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”;那么, useruser="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
map) { List
userList = new ArrayList
(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (int i = 0; i < 10; i++) { userList.add(new User(i, "hqq" + i)); } map.put("userList", userList); return "show"; }}
    
Show

Velocity


1. "#"用来标识Velocity的脚本语句。

1.1 \#set

#set($username="riqi")#set($age=26)用户名: $username年龄: $age

1.2 \#if

#if($age>18)$username is not teenager#else $username is teenager#end

1.3 \#foreach

    #foreach($user in $userList)
  • $user.id:$user.name
  • #end

1.4 \#include

#include("../file/note.txt")

转载地址:http://mxqli.baihongyu.com/

你可能感兴趣的文章
[转]在ASP.NET 2.0中操作数据::创建一个数据访问层
查看>>
Linux命令之chmod详解
查看>>
【java小程序实战】小程序注销功能实现
查看>>
Java中子类能否继承父类的私有属性和方法
查看>>
JVM内存模型详解
查看>>
(六) Git--标签管理
查看>>
建造者模式(Builder)-设计模式(三)
查看>>
Verilog编程网站学习——门电路、组合电路、时序电路
查看>>
android——学生信息显示和添加
查看>>
Android——ImageSwitcher轮流显示动画
查看>>
Android——利用手机端的文件存储和SQLite实现一个拍照图片管理系统
查看>>
图像调优1:清晰度相关参数MTF,SFR,MTF50,MTF50P 以及TVL的概念以及换算说明
查看>>
罗永浩欲直播带货,京东说可以帮忙联系
查看>>
B站,正在变成下一个“公众号”?
查看>>
小米启动安心服务月 手机家电产品可免费清洁保养
查看>>
刘作虎:一加新品将全系支持 5G
查看>>
滴滴顺风车上线新功能,特殊时期便捷出行
查看>>
不会延期!iPhone 12S预计如期在9月发售:升级三星LTPO屏幕
查看>>
腾讯物联网操作系统TencentOS tiny线上移植大赛,王者机器人、QQ公仔、定制开发板等礼品等你来拿 !
查看>>
为云而生,腾讯云服务器操作系统TencentOS内核正式开源
查看>>