首页 > 编程语言 >JAVA集成velocity实现对已有模板替换(占位符变量)替换

JAVA集成velocity实现对已有模板替换(占位符变量)替换

时间:2023-07-10 19:11:06浏览次数:51  
标签:JAVA name org import apache velocity 替换 模板

 

 

平时我们如果有一些简单的模板替换需求,比如有个txt文件,或者代码生成模板文件 要根据传入的变量替换成具体的值 就可以使用这个框架

 

依赖

 <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>

 

 

把模板文件放在resource底下 ,命名改成以.vm结尾

template.txt.vm 内容如下

{name},你好

 

 

java类

VelocityInitializer.java

import org.apache.velocity.app.Velocity;

import java.util.Properties;

/**
 * VelocityEngine工厂
 */
public class VelocityInitializer {
    /**
     * 初始化vm方法
     */
    public static void initVelocity() {
        Properties p = new Properties();
        try {
            // 加载classpath目录下的vm文件
            p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
            // 定义字符集
            p.setProperty("input.encoding", "UTF-8");
            p.setProperty("output.encoding", "UTF-8");
            // 初始化Velocity引擎,指定配置Properties
            Velocity.init(p);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

 

 

使用方式

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;

import java.io.StringWriter;

public class VelocityUtils {


    /**
     * 设置模板变量信息
     *
     * @param name 模板的变量值,这里也可以传对象 传对象的话 模板就需要使用${对象名.属性名}
     * @return
     */
    public static VelocityContext prepareContext(String name) {
        VelocityContext velocityContext = new VelocityContext();
        velocityContext.put("name", name);
        return velocityContext;
    }


    /**
     * 生成模板,使用方式
     *
     * @param name
     * @return
     */
    public static void generateTemplate(String name) {
            VelocityInitializer.initVelocity();

            //设置模板数据
            VelocityContext context = prepareContext(name);


            StringWriter sw = new StringWriter();

            //这里是模板存放的路径,如果是resource底下,直接这样写就可以
            Template tpl = Velocity.getTemplate("/template.txt.vm", "UTF-8");

            //填充模板数据
            tpl.merge(context, sw);

            //这个就是变量替换后的模板内容,可以根据自己需求增加后面逻辑
            String template = sw.toString();

    }
}

 

标签:JAVA,name,org,import,apache,velocity,替换,模板
From: https://www.cnblogs.com/pxblog/p/17542062.html

相关文章

  • java类和对象学习总结
    当一个引用赋值为null的时候,就代表这个引用不指向任何的对象引用不能指向引用,只能说引用指向了另一个引用的对象.一个引用不能指向多个对象this引用的学习:代表的是当前对象的引用,每一个成员方法的第一个参数默认是thisthis.year this.month   加上this代表给当前的对象......
  • JavaScript加密:常见加密种类、优缺点和代码示例
    当涉及到JavaScript加密时,有多种加密算法和技术可供选择。下面我将列举一些常见的加密种类、它们的优缺点,并提供一些代码案例作为参考。对称加密算法:对称加密算法使用相同的密钥进行加密和解密。常见的对称加密算法包括AES(AdvancedEncryptionStandard)和DES(DataEncryptionS......
  • Java实现浏览器端大文件分片上传实例
    ​ 上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这里......
  • 面试进阶齐飞!Github一天万赞的阿里Java系统性能优化有多牛?
    前两天在知乎上看到一个问答,说的是:一个Java程序员具备什么样的素质和能力才可以称得上高级工程师?这个问题也引发了我的一些思考,可能很多人会说,“作为高级工程师,基础得过硬、得熟练掌握一门编程语言、至少看过一个优秀开源项目的源代码、有过高并发/性能优化的工作经验、沟通能力......
  • java判断json格式的方法
    ​  在Java中,您可以使用不同的库来检查和验证JSON。以下是使用两个常用的JSON库(Jackson和Gson)来检查JSON的示例代码:使用Jackson库:importcom.fasterxml.jackson.core.JsonParseException;importcom.fasterxml.jackson.databind.JsonNode;importcom.fasterxml.jack......
  • java判断json格式的方法
    ​   在Java中,您可以使用不同的库来检查和验证JSON。以下是使用两个常用的JSON库(Jackson和Gson)来检查JSON的示例代码:使用Jackson库:importcom.fasterxml.jackson.core.JsonParseException;importcom.fasterxml.jackson.databind.JsonNode;importcom.fasterxml.ja......
  • 七月十日Java学习
    今天学习了如何循环的具体使用,并学习了如何生成一定范围的随机数。    ......
  • M1芯片Macbookpro 卸载 Java jdk
    M1芯片Macbookpro卸载Javajdk1.进入目录查看jdk环境cd/Library/Java/JavaVirtualMachinesls2.删除jdksudorm-rf/Library/Java/JavaVirtualMachines/jdk环境sudorm-rf/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdksudorm-rf/Library/Java/JavaVir......
  • Java 中怎样将 bytes 转换为 long 类型?
     将bytes转换为long类型:第一种方式:String接收bytes的构造器转成String,再Long.parseLong;但此种情况需要注意:字节数组中的每个字节都必须是有效的数字字符。如果字节数组包含非数字字符,则会引发NumberFormatException异常。确保在调用Long.parseLong......
  • JavaScript|对象
    1类和对象1)对象的概念对象:一个具体的实体在现实世界中,对象随处可见,一个人,一个学生,一个杯子,一辆汽车,游戏里的一个英雄...都是一个对象2)对象的组成如何描述一个对象呢比如,每个人都有姓名,年龄,性别这些特征.游戏里的英雄都有生命值,攻击力,防御......