一、了解Velocity
JSP、Freemarker、Velocity并称3大模版技术
下面是JSP
、Freemarker
和Velocity
的简要对比表格:
特性/技术 | JSP | Freemarker | Velocity |
---|---|---|---|
设计目标 | 视图层技术,与Servlet结合 | 模板引擎,用于生成HTML | 模板引擎,用于生成各种文本输出 |
与Java集成 | 紧密集成,可以直接编写Java代码 | 松散集成,通过模板变量和表达式访问数据 | 松散集成,通过模板变量和表达式访问数据 |
语法 | 类似HTML的XML语法,可嵌入Java代码 | 自定义模板语言,简洁易懂 | 自定义模板语言,类似Freemarker |
性能 | 编译后性能较好,但初次加载较慢 | 编译后性能优秀,初次加载较快 | 编译后性能较好,初次加载中等 |
指令 | 指令如<jsp:include> 、<jsp:forward> 等 | 自定义指令,如<#assign> 、<#if> 等 | 自定义指令,如#set 、#if 等 |
表达式 | 支持EL表达式和JSTL标签库 | 支持丰富的表达式和函数 | 支持表达式和宏定义 |
错误处理 | 依赖于Java异常处理 | 自定义错误处理机制 | 自定义错误处理机制 |
学习曲线 | 较高,需要了解Java和JSP语法 | 较低,专注于模板编写 | 较低,专注于模板编写 |
应用场景 | Java Web应用程序 | 报告、邮件模板、Web页面等 | 报告、邮件模板、Web页面等 |
这个表格提供了一个简要的对比,但请注意,每个技术都有其独特的优点和适用场景。在选择使用哪种技术时,应考虑到项目的具体需求、团队的技术栈和偏好,以及技术的长期维护性和社区支持等因素。
二、入门:编写Velocity的DEMO
velocity 使用不依赖于于springboot
<!--velocity代码生成使用模板 --><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId></dependency>
2.1编写测试DEMO:
类位置:ruoyi-admin/src/test/java/com/ruoyi/test/utilTest/VelocityTest.java
test 测试文件下新建测试类
如下面测试类4个步骤:加载模版并将数据合并到模版
package com.ruoyi.test.utilTest;import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.io.FileWriter;
import java.io.IOException;
import java.util.Pro