zxpnet网站 zxpnet网站
首页
前端
后端服务器
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

zxpnet

一个爱学习的java开发攻城狮
首页
前端
后端服务器
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 大后端课程视频归档
  • 南航面试题
  • 并发编程

  • 性能调优

  • java8语法

  • lombok

  • 日志

  • 工具类

  • spring

  • mybatis

  • springboot

  • redis

  • zookeeper

  • springcloud

  • dubbo

  • netty

  • springsecurity

  • mq消息中间件

  • shiro

  • beetle

  • 模板引擎

  • jpa

  • 数据结构与算法

  • 数据库知识与设计

  • gradle

  • maven

  • bus

  • 定时任务

  • docker

  • centos

  • 加解密

  • biz业务

  • pigx项目

  • 开源项目

  • 品达通用权限项目-黑马

  • 货币交易项目coin-尚学堂

  • php

  • backend
  • 代码生成器
shollin
2021-06-18
目录

velocity引擎

  • Velocity简介
  • 基本语法
    • $
    • !
    • 变量
    • 变量的赋值
    • 循环
    • 条件
    • 注释
  • 基本的使用步驟

# Velocity简介

Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。它作为一款成熟的基于java的模板引擎,能够帮我们实现页面静态化,同时它将Java代码与网页分开,使网站在其生命周期内更加可维护,并为Java Server Pages(JSP)或PHP提供了可行的替代方案。

# 基本语法

#

Velocity关键字都是使用#开头的,如#set、#if、#else、#end、#foreach等

# $

Velocity变量都是使用开 头 的 , 如 : 开头的,如:开头的,如:name、$msg

# !

如果某个Velocity变量不存在,那么页面中就会显示$xxx的形式,为了避免这种形式,可以在变量名称前加上!如页面中含有$!msg,如果msg有值,将显示msg的值;如果不存在就会显示为空白(建议使用)

# 变量

变量的定义

<body>
#set($root = "www")  //定义root变量值为www
#set($name = "index")  //定义name变量值为index
#set($template = "$root/$name")  //定义template变量值为www/index
hello $template
</body>
1
2
3
4
5
6

输出结果

hello www/index
1

# 变量的赋值

赋值的左边必须是一个变量,或者是属性的引用。右边可以是:变量引用、字面字符串、属性引用、方法引用、字面数字、数组

#set($name = $bill)   ##变量引用  
#set($name.pre = "monica")  ##字符串  
#set($name.last = $address.num) ##属性引用  
#set($name.mid = $hotel.find($web)) ##方法引用  
#set($name.num = 123) ##数字  
#set($name.say = ["yes",$my,"yes"]) ##数组 
1
2
3
4
5
6

velocity会将属性解释为属性的get方法,如:

$foo.Bar   等同于 $foo.getBar()
$foo.User("join")  等同于 $foo.getUser("join")
$foo.Request.ServerName 等同于 $foo.getRequest().getServerName()
1
2
3

# 循环

#foreach( 单个元素名称 in 集合)  
      ....  
#end
1
2
3

$velocityCount 在foreach中velocityCount表示循环的次数

  • $velocityCount是循环的索引值

  • $velocityCount都是从1开始计数

示例:

#foreach($ofl in $!obj.ofls)
	#if($velocityCount==1)
	<h1><span class="fl">创建时间:<em>$!ofl.addTime</em></span></h1>
#end
1
2
3
4

注意:加1的情况可以正确计算出结果,并且能够正确显示,可是减1的语句直接作为一个字符串输出了,不能计算出结果。

解决方案:

v#set($temp=$velocityCount)
  $temp-1
1
2

示例

#foreach( $num in [2..-2])  
 this is $num.</br>  
#end
1
2
3

输出

this is 2.
this is 1.
this is 0.
this is -1.
this is -2
1
2
3
4
5

# 条件

#if(condition)  
......
#elseif(condition)  
......
#else  
......
#end 
1
2
3
4
5
6
7

判断null或者false

#if( !$name)
 something code
#end
1
2
3

判断null或者空字符串

#if( "$!name" == "")
 something code
#end
1
2
3

关系和逻辑操作符

&& 并且  || 或者   ! 取反
1

# 注释

单行注释##

##这里写注释
1

多行注释#* *#

#*  
    这个写注释  可以写多行的注释
*# 
1
2
3

# 基本的使用步驟

初始化Velocity。Velocity可以使用两种模式,作为“单独的运行时实例”的单例模式(在下面的内容会介绍),你仅仅只需要初始化一次。 创建一个Context对象(后面会介绍这是什么)。 把你的数据对象添加到Context(上下文)。 选择一个模板。 ‘合并’ (merge)模板和你的数据输出。 结合springboot测试

<!--在高版本的springboot中是不支持velocity了。最高只到1.4.x版本支持-->
        <!-- 引入velocity模板  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-velocity</artifactId>
        </dependency>

        <!--<dependency>-->
            <!--<groupId>org.apache.velocity</groupId>-->
            <!--<artifactId>velocity</artifactId>-->
            <!--<version>1.7</version>-->
        <!--</dependency>-->
        <!--<dependency>-->
            <!--<groupId>org.apache.velocity</groupId>-->
            <!--<artifactId>velocity-tools</artifactId>-->
            <!--<version>2.0</version>-->
        <!--</dependency>-->
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

yml配置文件

spring.velocity.cache= false
spring.velocity.charset=UTF-8
spring.velocity.check-template-location=true
spring.velocity.content-type=text/html
spring.velocity.enabled=true
spring.velocity.resource-loader-path=/templates
spring.velocity.prefix=/templates/
spring.velocity.suffix=.vm
1
2
3
4
5
6
7
8

Controller层

@Controller
public class VelocityContoller {
	@RequestMapping("/")
        public String index(Map map){
            User user = new User();
            user.setAge(23);
            user.setDate(new Date());
            user.setId("1");
            user.setName("张三");

            map.put("message", "获取用户信息");
            map.put("name", "张三");
            //map.put("age", "24");
            map.put("user",user);
            return "index";
        }
}

index.vm

<!DOCTYPE html>
<head lang="en">
    <meta charset="UTF-8" />
    <title>Insert title here</title>
</head>
<html>
<body>
    $message
    $name
    $!age
<br>
    $user.age
    $user.getId()
    $user.name
    $user.date
<br>
    #if($user.getId()==2)
        id為:$user.getId()
    #else
        id為:null
    #end

<br>
#set($ljk="luojiankang")
$ljk

</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

输出页面上

总结 Velocity将Java代码从Web 页面中分离出来,使用Web站点从长远看更容易维护,并且提供了一种可行的JavaServer Pages替代解决方案。

Velocity是一种基于Java的模板引擎,但允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。

Velocity就是MVC架构的一种实现,但它更多的是关注在Model和View之间,作为它们的桥梁。

参考文章:

Velocity的简单使用_罗罗的1024-CSDN博客_velocity (opens new window)

参考视频:

黑马程序员Java进阶VelocityTools全套教程,哔哩哔哩_bilibili (opens new window)

最近更新
01
国际象棋
09-15
02
成语
09-15
03
自然拼读
09-15
更多文章>
Theme by Vdoing | Copyright © 2019-2023 zxpnet | 粤ICP备14079330号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式