Velocity的使用(下)

简介: Velocity的使用

二.二.五 include 包含文件


二.二.五.一 include 文件 vm


创建 foot.vm


<hr>
<i>
    Copyright (c) 2000 <a href="top.yueshushu.com">yueshushu_top</a>,
    <br>
    All Rights Reserved.
</i>


创建 footInclude.vm


<html>
<head>
    <title>Include page</title>
</head>
<body>
<h1>Include page</h1>
<p>
    ## -- 放置进去, #include 填充进去。 #include 填充进去。
    谢谢您来关注我: ${name}
    #include ("foot.vm")
</body>
</html>


二.二.五.二 include 开发


@Test
    public void includeFillTest()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("footInclude.vm");
        //5. 构建 VelocityContext 对象,里面放置内容
        Map<String,Object> root=new HashMap<>();
        root.put("name","两个蝴蝶飞");
        VelocityContext velocityContext=new VelocityContext(root);
        //6. 找到StringWriter对象,进行合并
        StringWriter stringWriter=new StringWriter();
        template.merge(velocityContext,stringWriter);
        System.out.println("输出信息:"+stringWriter.toString());
    }


e0e971afaf842156b6ef742ba90de8b7.png


三. 使用 Velocity 配置模板文件


可以使用 Velocity 的配置文件, 通过往模板里面填充属性,来创建特定的文件。


如生成一个基本的 Main 类


三.一 模板 vm


package ${packageName};
/**
@author: ${author}
@Date: ${createDate}
@Description: ${classDescription}
*/
public class ${className}{
/**
功能描述: ${mainMethodDesc}
*/
public static void main(String []args){
    System.out.println("${info}");
    }
}


三.二 模板类创建


public class MainTests {
    @Test
    public void mainTests() 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("main.vm","utf-8");
        //5.设置变量
        Map<String,Object> root=getMainMap();
        VelocityContext velocityContext=new VelocityContext(root);
        //6.进行处理,发送到模板文件里面。
        PrintWriter printWriter=new PrintWriter("src\\main\\java\\com\\zk\\velocity\\VelocityMain.java");
        template.merge(velocityContext,printWriter);
        //刷新并关闭
        printWriter.flush();
        printWriter.close();
         System.out.println("生成文件成功");
    }
    private Map<String,Object> getMainMap() {
        Map<String,Object> root=new HashMap<>();
        root.put("packageName","com.zk.velocity");
        root.put("author","zk");
        root.put("createDate",new Date());
        root.put("classDescription","一个测试Velocity 自动生成类");
        root.put("className","VelocityMain");
        root.put("mainMethodDesc","一个普通的测试方法");
        root.put("info","Velocity 创建类生成信息");
        return root;
    }
}


89911c7851a699df5fa903fdef813680.png


生成的模板文件类:


5bc2f07622d30b1cd21bd7f2b8385607.png


本章节的代码放置在 github 上:


https://github.com/yuejianli/springboot/tree/develop/Velocity


谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

相关文章
|
4天前
|
存储 人工智能 安全
AI 越智能,数据越危险?
阿里云提供AI全栈安全能力,为客户构建全链路数据保护体系,让企业敢用、能用、放心用
|
7天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
6天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
404 93
|
6天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
399 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
|
6天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
291 158
|
14天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。