最近遇到了Velocity,需要使用到,就上网查询资料,自己写了个demo;

一、Velocity是什么?

Velocity是一个基于Java的模板引擎,其提供了一个Context容器,在java代码里面我们可以往容器中存值,然后在vm文件中使用特定的语法获取,这是velocity基本的用法;

二 、Velocity 怎么使用?下面是demo

第一步:创建项目工程,引入jar(注:这是用Velocity所需的全部jar  commons-beanutils.jar commons-collections-3.1.jar commons-digester-1.8.jar velocity-1.7.jar  velocity-1.7-dep.jar  velocity-tools-2.0.jar)

第二 步:创建实体类User(这里我是为了测试加载实体类如何获取),也可以直接写个测试类

User类

package pojo;public class User {private int id;private String user;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUser() {return user;}public void setUser(String user) {this.user = user;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

这里需要注意,有个坑,就是会报加载不到文件,可以上网查询资料,我这里说下两种方式希望可以帮助到大家

1、第种方式:(Velocity的默认加载)(这里的hello.vm文件需要放置在与src同目录下的vm文件夹中)

package velocity;import java.io.StringWriter;import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;import pojo.User;public class TestVelocity01 {public static void main(String[] args) {    // //实例化一个VelocityEngine对象VelocityEngine velocityEngine = new VelocityEngine();// 实例化一个VelocityContextVelocityContext context = new VelocityContext();// 向VelocityContext中放入键值context.put("username", "张三");context.put("password", "123456789");User u = new User();u.setAge(18);u.setUser("yanbinfeng");context.put("user", u);// 实例化一个StringWriterStringWriter writer = new StringWriter();System.out.println(context.toString());// 从src目录下加载hello.vm模板// 假若在com.velocity.test包下有一个hello.vm文件,那么加载路径为com/velocity/test/hello.vmvelocityEngine.mergeTemplate("vm/hello.vm", "gbk", context, writer);// velocityEngine.mergeTemplate("hello.vm", "gbk", context, writer);System.out.println(writer.toString());}}

第二种方式:用class的方式加载 (这里需要的hello.vm文件需要放置src目录下的vm文件夹中)

package velocity;import java.io.StringWriter;
import java.util.Properties;import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;import pojo.User;public class TestVelocity01 {public static void main(String[] args) {Properties properties=new Properties();//设置velocity资源加载方式为classproperties.setProperty("resource.loader", "class");//设置velocity资源加载方式为file时的处理类properties.setProperty("class.resource.loader.class","org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");//实例化一个VelocityEngine对象VelocityEngine velocityEngine = new VelocityEngine(properties);// 实例化一个VelocityContextVelocityContext context = new VelocityContext();// 向VelocityContext中放入键值context.put("username", "张三");context.put("password", "123456789");User u = new User();u.setAge(18);u.setUser("yanbinfeng");context.put("user", u);// 实例化一个StringWriterStringWriter writer = new StringWriter();System.out.println(context.toString());// 从src目录下加载hello.vm模板// 假若在com.velocity.test包下有一个hello.vm文件,那么加载路径为com/velocity/test/hello.vmvelocityEngine.mergeTemplate("vm/hello.vm", "gbk", context, writer);// velocityEngine.mergeTemplate("hello.vm", "gbk", context, writer);System.out.println(writer.toString());}}

hello.vm中的内容如下:

<?xml version="1.0" enconding="utf-8" ?>
<name>$!username<name>
<age>$!user.age</age>

打印出来的结果如下:

org.apache.velocity.VelocityContext@1b277f0
<?xml version="1.0" enconding="utf-8" ?>
<name>张三<name>
<age>18</age>

Velocity详解及demo相关推荐

  1. 超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享...

    超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享 DI框架 Google-Guice入门介绍 转载于:https://www.cnblogs.com ...

  2. java velocity详解_[velocity] velocity详解

    (1)为什么要使用模版语言? 在服务器端可以使用 Velocity处理模板和生成的动态内容(HTML.XML等).这和JSP技术的目标非常接近.但是,JSP模型可以毫无阻碍地访问底层的Servlet  ...

  3. linux-C 重定向句柄操作(dup,duo2,dup3)详解及demo

    dup类函数的作用 复制文件描述符 1.dup int dup(int oldfd); 参数: oldfd 被复制的文件描述符 返回值: 成功后,将返回新的文件描述符. 如果出错,则返回-1,并正确设 ...

  4. Android添加手机黑名单,手机来电拦截实现详解与Demo,一个不错的练手项目,涵盖Android四大组件。

    简介 这是一个小应用的详解,这个应用可以添加手机黑名单,拦截手机黑名单的来电.通过这个小demo,我们可以对Android四大组件的应用场景有个具体的了解,可以说是一个不错的练手项目. 下面给出下载地 ...

  5. MVC、MVP、MVVM结合案例详解-附Demo

    本篇以登陆模块功能详解MVC.MVP.MVVM的优缺点及使用. 目录 一.MVC 1.概念 2.总结 二.MVP 1.概念 2.总结 三.MVVM 1.概念 2.Android Data Bindin ...

  6. FFmpeg视频解码流程详解及demo

    本文主要讲解FFmpeg的视频解码具体流程,API使用,以及相关结构体介绍.最后再以一个非常简单的demo演示将一个mp4格式的视频文件解码为原始数据yuv文件. FFmpeg解码流程有2套API接口 ...

  7. Android 微信支付详解与Demo

    最近公司弄Ionic框架,项目中需要微信支付,无奈,把我调过去弄,期间也是几近崩溃,好在皇天不负有心人,在看别人的文档,终于是在项目中集成了微信支付,下面作为一个小白的我,想要把我的经验分享给大家,希 ...

  8. Xcode7 UI自动化测试详解 带demo UITests

    本文转载自:http://www.cocoachina.com/ios/20150925/13566.html UI Tests是什么? UI Tests是一个自动测试UI与交互的Testing组件 ...

  9. Linux网络知识详解以及demo(Centos6、7)——OSI、TCP、UDP、IP、子网掩码/划分、网关、路由、广播、虚拟网络、网卡、交换机、DNS、ARP

    ip地址:网络通讯标识信息 子网掩码:在局域网中可以有多少个主机 网关:从一个局域网到另一个局域网的必经之路 网络号:主机位全为0 广播地址:主机位全为1 子网掩码:网络位全为1,主机位全为0 虚拟软 ...

最新文章

  1. 网管软件——Net Meter V3.3中文版
  2. 数据导出到Excel
  3. 搭建Eclipse C++开发环境
  4. cv::mat 颜色空间_网站设计基础:负空间
  5. 2016CCPC网络赛赛后总结——回顾与反思
  6. 计算机做游戏到大学要学什么,大学学什么专业,毕业才能从事电竞行业?
  7. 新版谷歌浏览器开启Flash支持
  8. 打开计算机属性的命令,电脑双击打开的是属性怎么办
  9. rpm遇到的坑-与VMP冲突
  10. 弹性地基梁板实用计算_建筑地基基础设计规范要点
  11. express-art-template模板引擎(详细)
  12. CentOS6内核文件vmlinuz恢复
  13. 骁龙cpu linux内核,高通骁龙888 SoC在Linux 5.12内核才被支持,以往怎么兼容的?
  14. 尽管凭借主持人的身份成名,张绍刚先生在内心深处却对这一角色认可度很低
  15. 大一寒假训练:集训内容考试(二)【未完待续】
  16. cuda C 编程权威指南 Grossman 第2章 CUDA编程模型
  17. 分享文件的另一种选择--Firefox Send
  18. android 获取 imei号码,大厂内部资料
  19. 一款功能强大的倒计时软件RH Timer mac
  20. 【Nginx】Nginx在大型网络框架中的应用

热门文章

  1. 简单认识向上转型和向下转型
  2. 360软件管家解除文件关联
  3. SpringBoot文件分片上传
  4. 记录jsp页面获取table中c:forEach循环下的td里的值
  5. 2021-06-23 自由落体运动,抛物线运动和缓冲运动的实现
  6. 从2014全球出版业50强排行榜看出版产业的格局演变
  7. IDEA驼峰式命名插件CamelCase
  8. 【华人学者风采】刘欢 亚利桑那州立大学
  9. 学好了Python可以干什么?
  10. Oracle分析函数(每组数据取一条记录)