Velocity的简单使用

Velocity的简单使用velocity 简介 Velocity 是一个基于 java 的模板引擎 templateengi 它允许任何人仅仅简单的使用模板语言 templatelang 来引用由 java 代码定义的对象 它作为一款成熟的基于 java 的模板引擎 能够帮我们实现页面静态化 同时它将 Java 代码与网页分开 使网站在其生命周期内更加可维护 并为 JavaServerPa JSP 或 PHP 提供了可行的替代方案 基本语法 Velocity 关键字都是使用 开头的 如 set if else e

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的值;如果不存在就会显示为空白(建议使用

变量

变量的定义
 #set($root = "www") //定义root变量值为www #set($name = "index") //定义name变量值为index #set($template = "$root/$name") //定义template变量值为www/index hello $template 

输出结果

hello www/index 
变量的赋值

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

#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"]) 数组 

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

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

循环

#foreach( 单个元素名称 in 集合) .... #end 
$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的情况可以正确计算出结果,并且能够正确显示,可是减1的语句直接作为一个字符串输出了,不能计算出结果。

解决方案:

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

示例

#foreach( $num in [2..-2]) this is $num. #end 

输出

this is 2. this is 1. this is 0. this is -1. this is -2 

条件

#if(condition) ...... #elseif(condition) ...... #else ...... #end 

判断null或者false

#if( !$name) something code #end 

判断null或者空字符串

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

关系和逻辑操作符

&& 并且 || 或者 ! 取反 

注释

单行注释

这里写注释 

多行注释#* *#

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

基本的使用步驟

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

结合springboot测试

 
     
    <dependency> <groupId>org.springframework.boot 
     groupId> <artifactId>spring-boot-starter-velocity 
      artifactId>  
       dependency>  
        
        
        
        
        
        
        
        
        
       

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 

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

 <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> 

总结

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176706.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午9:15
下一篇 2026年3月26日 下午9:15


相关推荐

  • Ubuntun下tree命令的安装[通俗易懂]

    Ubuntun下tree命令的安装[通俗易懂]tree命令是可以把指定文件夹的所以文件用树状罗列出来,呈现目录形式的一个命令。没有安装之前,tree命令默认不能直接使用。虽然很多人说一条命令可以解决yum-yinstalltree可是发现yum命令也需要安装。在网上找了安装yum命令的教程发现又要安装rpm命令(我的内心是拒绝的)很麻烦,但是还是要继续如果对linux不是很熟悉的话建议还是需要什么安装什么,不要

    2022年7月24日
    18
  • pytorch之torch.nn.Conv2d()函数详解

    pytorch之torch.nn.Conv2d()函数详解文章目录一 官方文档介绍二 torch nn Conv2d 函数详解参数详解参数 dilation 扩张卷积 也叫空洞卷积 参数 groups 分组卷积三 代码实例一 官方文档介绍官网 nn Conv2d 对由多个输入平面组成的输入信号进行二维卷积二 torch nn Conv2d 函数详解参数详解 torch nn Conv2d in channels out channels kernel size stride 1 padding 0 dilation 1 groups

    2026年3月20日
    1
  • 网络爬虫——正则表达式语法

    网络爬虫——正则表达式语法正则表达式基础讲解一、什么是正则表达式在网络爬虫将网页内容爬取的时候,有一个关键的步骤就是对我们关注的信息进行提取,正则表达式就是用于信息筛选提取的强大工具,并且学习简单,所以建议大家掌握。Python正则表达式语句re.compile(“正则表达式”).findall(“原字符串”)1.匹配符普通字符 正常匹配其中的字符。\n 匹配换行符。\t 匹配制表符。\…

    2022年7月15日
    18
  • 在国内怎么使用谷歌Chrome浏览器,为什么我的谷歌浏览器进去就加载失败

    在国内怎么使用谷歌Chrome浏览器,为什么我的谷歌浏览器进去就加载失败下面跟着我的步伐一起看看吧!一、当你如获至宝的在搜索框输入关键字然后按下回车,经过差不多一杯奶茶的时间加载,你看到了这张图妈耶!不会是我有下载错软件包了吧?我网掉了,没有啊?我设置不对啊?等等,你差不多猜对了,还真跟设置有点关系,我们要知道,正常情况下,国内是无法使用谷歌搜索的二、设置接着你打开设置找到搜索引擎,然后我们选择百度昂梵蒂冈这里我么输入www.baidu.com然后保存即可再次打开谷歌浏览器,这才像摸像样嘛…

    2022年7月14日
    36
  • Sftp和ftp 区别

    Sftp和ftp 区别FTP 文件传输协议 工作原理 nbsp 目前在网络上 如果你想把文件和其他人共享 最方便的办法莫过于将文件放 FTP 服务器上 然后其他人通过 FTP 客户端程序来下载所需要的文件 1 FTP 架构 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 如同其他的很多通讯协议 FTP 通讯协议也采用客户机 服务器 Client Server 架构 用户可以通过各种不同的 FTP 客户端程序 借助 FTP 协议 来连接 FTP 服务器 以上传或者下载文件

    2026年3月17日
    2
  • 即梦ai如何登录

    即梦ai如何登录

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号