Velocity的使用(中)

简介: Velocity的使用

二.二.二.二 If 条件语句 开发


   @Test
    public void ifFillTest()throws Exception{
        //1. 创建模板引擎
        VelocityEngine velocityEngine=new VelocityEngine();
        //2. 设置属性
        velocityEngine.setProperty(
                RuntimeConstants.RESOURCE_LOADER,"classpath"
        );
        velocityEngine.setProperty(
                "classpath.resource.loader.class",
                ClasspathResourceLoader.class.getName()
        );
        //3. 进行初始化
        velocityEngine.init();
        //4.获取对应的模板信息
        Template template=velocityEngine.getTemplate("if.vm");
        //5. 构建 VelocityContext 对象,里面放置内容
        Map<String,Object> root=new HashMap<>();
        root.put("age",130);
        root.put("sex","男");
        root.put("score",86);
        VelocityContext velocityContext=new VelocityContext(root);
        //6. 找到StringWriter对象,进行合并
        StringWriter stringWriter=new StringWriter();
        template.merge(velocityContext,stringWriter);
        System.out.println("输出信息:"+stringWriter.toString());
    }


fc1a9209892a713fc97a0f1ceef04206.png


二.二.三 foreach 循环语句 展示


二.二.三.一 foreach 循环语句 vm


创建 foreach.vm 文件


#[[ 放置foreach 循环语句,进行处理 ]]#
## 放置 list或者数组 array
#foreach ($hobby in $hobbys)
    $hobby
#end
#if(${users})
<ul>
    #foreach($user in $users)
        <li>${user.name}</li>
    #end
</ul>
#end
## 放置map语句
#foreach($key in $infoMap.keySet())
    ${key}------>${infoMap.get(${key})}
#end


二.二.三.二 foreach 循环语句 开发


User.java


@Data
public class User {
    private Integer id;
    private String name;
    private Integer sex;
    private Integer age;
    private String description;
}


   @Test
    public void foreachTest() throws Exception{
        //1.创建 VelocityEngine 引擎
        VelocityEngine velocityEngine=new VelocityEngine();
        //2. 设置属性
        velocityEngine.setProperty(
                RuntimeConstants.RESOURCE_LOADER,"classpath"
        );
        velocityEngine.setProperty(
                "classpath.resource.loader.class",
                ClasspathResourceLoader.class.getName()
        );
        //3. 进行初始化
        velocityEngine.init();
        //4.获取模板
        Template template=velocityEngine.getTemplate("foreach.vm");
        //5.进行填充数据
        Map<String,Object> root=new HashMap<>();
        String[] hobbys=new String[4];
        hobbys[0]="A";
        hobbys[1]="B";
        hobbys[2]="C";
        hobbys[3]="D";
        root.put("hobbys",hobbys);
        List<User> userList=getUserList();
        root.put("users",userList);
        Map<String,Object> infoMap=new HashMap<>();
        infoMap.put("name","YJL");
        infoMap.put("age",26);
        infoMap.put("sex","男");
        root.put("infoMap",infoMap);
        //6. 创建 VelocityContext 对象,填充数据。
        VelocityContext velocityContext=new VelocityContext(root);
        //7.
        StringWriter stringWriter=new StringWriter();
        //8. 通过 merge 方法,进行填充数据。
        template.merge(velocityContext,stringWriter);
        System.out.println("输出内容:"+stringWriter.toString());
    }
    private List<User> getUserList() {
        List<User> userList=new ArrayList<>();
        for(int i=1;i<=10;i++){
            User user=new User();
            user.setId(i);
            user.setName("蝴蝶"+i);
            user.setAge(i*3+1);
            user.setSex(i%2);
            user.setDescription("一个简单的描述");
            userList.add(user);
        }
        return userList;
    }


1c6f2806d0008fce6f89630219c45adb.png


二.二.四 macro宏语句 展示


二.二.四.一 macro宏语句 vm


创建 macro.vm 文件


## 这是宏,可以理解成一个函数。
## 声明宏   sayHello 是方法名, $name 为参数
#macro(sayHello $name)
    我们要讲述: $name
#end
## 使用宏
#sayHello("周小欢和岳泽霖的故事") 
## 定义加法
#macro(add $num1,$num2)
#set($total=$num1+$num2)
## 直接使用相加的操作,还是字符串。
   $num1+$num2=${total}
#end
#add(2,3)


二.二.四.二 macro宏语句 开发


  @Test
    public void macroTests() throws Exception{
        //1. 初始化模板引擎
        VelocityEngine ve=new VelocityEngine();
        //2. 设置相应的属性信息
        ve.setProperty(RuntimeConstants.RESOURCE_LOADER,"classpath");
        ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader
                .class.getName());
        //3. 进行初始化
        ve.init();
        //4.获取模板文件
        Template template=ve.getTemplate("macro.vm","utf-8");
        //5.设置变量
        VelocityContext velocityContext=new VelocityContext();
        velocityContext.put("name","岳泽霖");
        //6.进行合并,调用模板的 merge 方法, 将其进行填充。
        StringWriter stringWriter=new StringWriter();
        template.merge(velocityContext, stringWriter);
        System.out.println("输出信息值:"
                +stringWriter.toString());
    }


d59ad14476dda0c0398334fdd6d5e074.png



相关文章
|
存储 算法 安全
oss加密方式
阿里云OSS提供多种数据加密选项增强安全性:SSE-S3和SSE-KMS(服务器端加密),其中SSE-KMS支持使用KMS托管密钥;SSE-C和CSE-KMS(客户端加密)允许用户自管加密密钥,CSE-KMS结合KMS增强安全;还有SSE-OSS,完全托管的加密方式,使用AES-256并定期轮转主密钥。这些方案满足不同用户对密钥管理和数据安全的需求。
444 2
|
安全 数据安全/隐私保护 块存储
cephx: ceph的认证和加密协议
Ceph作为一个分布式存储系统,支持对象存储、块设备和文件系统。为了在网络传输中防止数据被篡改,做到较高程度的安全性,加入了Cephx加密认证协议。其目的是识别身份,加密、验证传输中的数据。 在ceph系统中,元数据保存在一个叫做ceph-mon的进程中,也可以称为monitor节点,系统可以有多个monitor副本节点,用paxos保持数据一致性。 这里不谈paxos,也不谈多个monitor
5397 0
|
2月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
440 11
|
JavaScript 前端开发
el-upload上传文件
el-upload上传文件
1336 0
|
6月前
|
机器学习/深度学习 敏捷开发 供应链
从多维度解构 Lead Time:定义、应用与优化策略
当我们谈论lead time时,往往会发现这个词在不同领域的定义存在细微差异。这种现象并非偶然,而是源于其本质的抽象性与适用场景的多样性。为了深入理解这一概念,我们需要从底层逻辑出发,通过跨领域的对比分析和实际案例验证,逐步揭示其核心内涵。
1357 16
Springboot文件下载跨域问题解决方案
Springboot文件下载跨域问题解决方案
|
前端开发 Java 应用服务中间件
计算机Java项目|基于SpringBoot的在线视频教育平台的设计与实现
计算机Java项目|基于SpringBoot的在线视频教育平台的设计与实现
271 0
|
12月前
|
机器学习/深度学习 人工智能 安全
探索AI在软件工程中的最新应用:自动化测试与代码审查
探索AI在软件工程中的最新应用:自动化测试与代码审查
|
前端开发
flowable流程设计器的几个bug修改记录
flowable流程设计器的几个bug修改记录
313 0
|
JavaScript 定位技术
vue-baidu-map 百度地图检索、获取坐标
vue-baidu-map 百度地图检索、获取坐标
315 1