Velocity 是一个基于 Java 的模板引擎。它允许任何人使用简单而强大的模板语言来引用 Java 代码中定义的对象。
当 Velocity 用于 Web 开发时,Web 设计人员可以与 Java 程序员并行工作,根据
Model-View-Controller (MVC)
模型开发网站,这意味着网页设计人员可以只专注于创建一个看起来不错的网站,程序员可以只专注于编写一流的代码。Velocity 将 Java
代码与网页分离,使网站在其生命周期内更易于维护,并为Java 服务器页面(JSP) 或PHP提供了可行的替代方案。Velocity 的功能远远超出了网络领域;例如,它可用于从模板生成 SQL、PostScript 和
XML。它既可以用作生成源代码和报告的独立实用程序,也可以用作其他系统的集成组件。例如,Velocity 为各种 Web
框架提供模板服务,使它们具有视图引擎,便于根据真正的 MVC 模型开发 Web 应用程序。
展示层有JSP、freemaker和velocity。
velocity官方文档:https://velocity.apache.org/engine/2.3/vtl-reference.html#ifelseifelse-output-conditional-on-truth-of-statements
API:
https://velocity.apache.org/engine/2.0/apidocs/org/apache/velocity/Template.html
pom引入依赖
org.apache.velocity
velocity
1.7
$!{name}
只要再html页面内,都可以写语句,要记得结尾
## 根据结果参数不同去展示不通的内容和样式
## 两个井号是注释符号
#if($!{result}==0)
通过
#else
失败
#end
假设我么需要对值进行计算或赋值
需要先用赋值#set()赋值操作去计算
如我们需要对后台list数量加1,如下
## 错误的写法:他没法判断你的值类型,你直接后面+1他就当成是字符串拼接了
姓名
## 正确的写法:
姓名
#foreach($item in $list)
$item.name
$item.age
#end
获取循环的序号 $velocityCount
怎么传入参数:
/**
* Velocity控制层
* @author ppp
* @date 2022/8/4
*/
@Controller
@RequestMapping("/velocity")
public class VelocityController {
@RequestMapping("/get")
public void get(HttpServletResponse response){
Velocity.setProperty(RuntimeConstants.OUTPUT_ENCODING, "UTF-8");
Velocity.setProperty(RuntimeConstants.INPUT_ENCODING, "UTF-8");
Velocity.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
Velocity.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
Velocity.init();
Template template = Velocity.getTemplate("demo.html", "UTF-8");
Context context = new VelocityContext();
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
try(PrintWriter writer = response.getWriter()){
context.put("name", "张三");
context.put("age", 25);
context.put("length", 165);
template.merge(context,writer);
}catch (Exception e){
e.printStackTrace();
}
}
}
demo.html
Insert title here
表格测试
姓名
年龄
身高
$!{name}
$!{age}
$!{length}
测试:
