Velocity详解及demo
最近遇到了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相关推荐
- 超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享...
超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享 DI框架 Google-Guice入门介绍 转载于:https://www.cnblogs.com ...
- java velocity详解_[velocity] velocity详解
(1)为什么要使用模版语言? 在服务器端可以使用 Velocity处理模板和生成的动态内容(HTML.XML等).这和JSP技术的目标非常接近.但是,JSP模型可以毫无阻碍地访问底层的Servlet ...
- linux-C 重定向句柄操作(dup,duo2,dup3)详解及demo
dup类函数的作用 复制文件描述符 1.dup int dup(int oldfd); 参数: oldfd 被复制的文件描述符 返回值: 成功后,将返回新的文件描述符. 如果出错,则返回-1,并正确设 ...
- Android添加手机黑名单,手机来电拦截实现详解与Demo,一个不错的练手项目,涵盖Android四大组件。
简介 这是一个小应用的详解,这个应用可以添加手机黑名单,拦截手机黑名单的来电.通过这个小demo,我们可以对Android四大组件的应用场景有个具体的了解,可以说是一个不错的练手项目. 下面给出下载地 ...
- MVC、MVP、MVVM结合案例详解-附Demo
本篇以登陆模块功能详解MVC.MVP.MVVM的优缺点及使用. 目录 一.MVC 1.概念 2.总结 二.MVP 1.概念 2.总结 三.MVVM 1.概念 2.Android Data Bindin ...
- FFmpeg视频解码流程详解及demo
本文主要讲解FFmpeg的视频解码具体流程,API使用,以及相关结构体介绍.最后再以一个非常简单的demo演示将一个mp4格式的视频文件解码为原始数据yuv文件. FFmpeg解码流程有2套API接口 ...
- Android 微信支付详解与Demo
最近公司弄Ionic框架,项目中需要微信支付,无奈,把我调过去弄,期间也是几近崩溃,好在皇天不负有心人,在看别人的文档,终于是在项目中集成了微信支付,下面作为一个小白的我,想要把我的经验分享给大家,希 ...
- Xcode7 UI自动化测试详解 带demo UITests
本文转载自:http://www.cocoachina.com/ios/20150925/13566.html UI Tests是什么? UI Tests是一个自动测试UI与交互的Testing组件 ...
- Linux网络知识详解以及demo(Centos6、7)——OSI、TCP、UDP、IP、子网掩码/划分、网关、路由、广播、虚拟网络、网卡、交换机、DNS、ARP
ip地址:网络通讯标识信息 子网掩码:在局域网中可以有多少个主机 网关:从一个局域网到另一个局域网的必经之路 网络号:主机位全为0 广播地址:主机位全为1 子网掩码:网络位全为1,主机位全为0 虚拟软 ...
最新文章
- 网管软件——Net Meter V3.3中文版
- 数据导出到Excel
- 搭建Eclipse C++开发环境
- cv::mat 颜色空间_网站设计基础:负空间
- 2016CCPC网络赛赛后总结——回顾与反思
- 计算机做游戏到大学要学什么,大学学什么专业,毕业才能从事电竞行业?
- 新版谷歌浏览器开启Flash支持
- 打开计算机属性的命令,电脑双击打开的是属性怎么办
- rpm遇到的坑-与VMP冲突
- 弹性地基梁板实用计算_建筑地基基础设计规范要点
- express-art-template模板引擎(详细)
- CentOS6内核文件vmlinuz恢复
- 骁龙cpu linux内核,高通骁龙888 SoC在Linux 5.12内核才被支持,以往怎么兼容的?
- 尽管凭借主持人的身份成名,张绍刚先生在内心深处却对这一角色认可度很低
- 大一寒假训练:集训内容考试(二)【未完待续】
- cuda C 编程权威指南 Grossman 第2章 CUDA编程模型
- 分享文件的另一种选择--Firefox Send
- android 获取 imei号码,大厂内部资料
- 一款功能强大的倒计时软件RH Timer mac
- 【Nginx】Nginx在大型网络框架中的应用