首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >velocity笔记(一)什么是velocity,我们什么时候会使用到这个,基本语法

velocity笔记(一)什么是velocity,我们什么时候会使用到这个,基本语法

作者头像
一写代码就开心
发布2021-08-31 16:09:56
发布2021-08-31 16:09:56
1.5K0
举报
文章被收录于专栏:java和pythonjava和python

目录

什么是velocity

也就是前端程序员写velocity模板,后端程序员写数据模型,最后整合就是展示给用户的东西

应用场景

组成结构

快速入门

以上就是创建了一个maven项目

我们要在项目中使用velocity,所以要导入对应的依赖

代码语言:javascript
复制
    <dependencies>
<!--        velocity  的核心包-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

<!--        进行单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

    </dependencies>

以上是导入依赖。 现在开始创建模板,这个模块在什么地方都可以,最后只要路径对了就可以,我们习惯放到resources文件夹下

以上先创建一个HTML模板,之后修改这个文件的后缀,变为vm

以上是最简单的语法。

之后我们要写测试类,里面调用这个vm文件,将数据写到这个vm里面

代码语言:javascript
复制
public class quickstart {

    @Test
    public void test1() throws IOException {

//        1  设置velocity 的资源加载器


        Properties properties = new Properties();
//        固定的写法
        properties.put("file.resource.loader.class","org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
//        2 初始化velocity引擎
        Velocity.init(properties);

//        3  创建velocity的容器
        VelocityContext velocityContext = new VelocityContext();
//        这个容器里面要放一些数据
        velocityContext.put("name","jing");
//        4 加载velocity的模板文件
        Template template = Velocity.getTemplate("vms/01-quickstart.vm", "utf-8");


//        5  合并数据到模板
        FileWriter fileWriter = new FileWriter("D:\\javacode\\velocity_01\\src\\main\\resources\\html\\01quick.html");
        template.merge(velocityContext,fileWriter);

//        6  释放资源
        fileWriter.close();

    }
}

执行完以上的语句,那么在新的文件夹下,就会生成一个HTML文件

总结

就是前端写velocity模板,后端写代码,将数据填充到模板里面,生成HTML文件

以后就是 填充的内容需要是动态的,使用的模板是动态的,输出的HTML的路径是动态的,其他的都是固定的。

基本语法

也就是根据这些语法,我们可以将在context里面的内容填充到模板中

注释

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
## 这个是单行注释

#*
* 这个是多行注释
*
* *#

#**
*   这个是文档注释
* *#


你好,${name},我是好人
</body>
</html>

在vm文件里面,写的注释,最后生成HTML文件,是不会出现在HTML里面的,但是会用空区域代替 有注释的地方,在HTML里面会有很多的空区域

非解析内容

也就是在模板里面写的什么,最后在HTML里面就会展示什么

引用

变量引用

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<h1>引用变量</h1>

常规语法:$name11
正规语法:${name11}


常规语法:  $!name11
正规语法 :  $!{name11}



</body>
</html>

属性引用

也就是变量是一个对象,我们想要对象里面的属性,所以这个就是属性引用

方法引用

指令

流程控制指令

#set 指令

模板

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
$user.username  ---  $user.password

$str.split(" ")
$now.getTime()

## 定义变量
#set($str = "hello")
#set($int = 10)
#set($arr = ["10","12"])
#set($boolean = true)
#set($map = {"key1":"values"})

#set($name = "jing")
#set($strt = "你好 $name")

## 获取变量

$str
$int
$arr
$boolean
$map.key1
$name
$strt


</body>
</html>

生成的HTML

#if/#elseif/#else

模板

代码语言:javascript
复制
#set($language = "java")

#if($language.equals("java"))
java
#elseif($language.equals("python"))
    python
#end

生成的HTML

#foreach

在velocity里面存放list数据

代码语言:javascript
复制
        ArrayList<String> strings = new ArrayList<>();
        strings.add("152");
        strings.add("452");
        strings.add("8566");
        String[]  hobbi = new String[]{"ddd","888","8888"};
        velocityContext.put("strings",strings);
        velocityContext.put("hobbi",hobbi);

在模板里面进行遍历

代码语言:javascript
复制
#foreach($item in $hobbi)
    $item
#end

#foreach($item in $strings)
    $item
#end

引入资源指令

宏指令

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 什么是velocity
  • 应用场景
  • 组成结构
  • 快速入门
    • 总结
  • 基本语法
    • 注释
    • 非解析内容
    • 引用
      • 变量引用
      • 属性引用
      • 方法引用
    • 指令
      • 流程控制指令
      • 引入资源指令
      • 宏指令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档