2019独角兽企业重金招聘Python工程师标准>>>

转载自: http://www.blogjava.net/sxyx2008/archive/2010/11/11/337799.html

velocity使用基本来说比较简单,但在加载模板时老出问题,很多初学者经常会遇到找不到模板这种异常。本文就针对目前常用的三种模板加载方式做以说明。
其工程目录结构大致为:

一、velocity默认的加载方式(文件加载方式)

package com.velocity.test;import java.io.StringWriter;
import java.util.Properties;import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;/*** 从文件中加载模板文件,即velocity默认的模板文件加载方式* @author welcome**/
public class LoaderFromFile {public static void main(String[] args) throws Exception{//初始化参数Properties properties=new Properties();//设置velocity资源加载方式为fileproperties.setProperty("resource.loader", "file");//设置velocity资源加载方式为file时的处理类properties.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");//实例化一个VelocityEngine对象VelocityEngine velocityEngine=new VelocityEngine(properties);//实例化一个VelocityContextVelocityContext context=new VelocityContext();//向VelocityContext中放入键值context.put("username", "张三");context.put("password", "123456789");context.put("age", "20");context.put("address", "陕西西安"); context.put("blog", "http://blogjava.net/sxyx2008");//实例化一个StringWriterStringWriter writer=new StringWriter();//从vm目录下加载hello.vm模板,在eclipse工程中该vm目录与src目录平级velocityEngine.mergeTemplate("vm/hello.vm", "gbk", context, writer);System.out.println(writer.toString());}
}

二、从类路径加载模板文件

package com.velocity.test;import java.io.StringWriter;
import java.util.Properties;import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;/*** 从class(类路径)中加载模板文件* @author welcome**/
public class LoaderFromClass {public static void main(String[] args) throws Exception{//初始化参数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");context.put("age", "20");context.put("address", "陕西西安"); context.put("blog", "http://blogjava.net/sxyx2008");//实例化一个StringWriterStringWriter writer=new StringWriter();//从src目录下加载hello.vm模板//假若在com.velocity.test包下有一个hello.vm文件,那么加载路径为com/velocity/test/hello.vmvelocityEngine.mergeTemplate("com/velocity/test/hello.vm", "gbk", context, writer);//velocityEngine.mergeTemplate("hello.vm", "gbk", context, writer);System.out.println(writer.toString());}
}

三、从jar文件中加载模板文件

package com.velocity.test;import java.io.StringWriter;
import java.util.Properties;import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;/*** 从jar文件中加载模板文件* @author welcome**/
public class LoaderFromJar {public static void main(String[] args) throws Exception{//初始化参数Properties properties=new Properties();//设置velocity资源加载方式为jarproperties.setProperty("resource.loader", "jar");//设置velocity资源加载方式为file时的处理类properties.setProperty("jar.resource.loader.class", "org.apache.velocity.runtime.resource.loader.JarResourceLoader");//设置jar包所在的位置properties.setProperty("jar.resource.loader.path", "jar:file:WebRoot/WEB-INF/lib/vm.jar");//实例化一个VelocityEngine对象VelocityEngine velocityEngine=new VelocityEngine(properties);//实例化一个VelocityContextVelocityContext context=new VelocityContext();//向VelocityContext中放入键值context.put("username", "张三");context.put("password", "123456789");context.put("age", "20");context.put("address", "陕西西安"); context.put("blog", "http://blogjava.net/sxyx2008");//实例化一个StringWriterStringWriter writer=new StringWriter();//从/WebRoot/WEB-INF/lib/vm.jar中加载hello.vm模板  vm.jar的目录结构为vm/hello.vmvelocityEngine.mergeTemplate("vm/hello.vm", "gbk", context, writer);System.out.println(writer.toString());}
}

转载于:https://my.oschina.net/letiantian/blog/173122

[转载]velocity模板加载相关推荐

  1. velocity模板加载

    http://www.blogjava.net/sxyx2008/archive/2010/11/11/337799.html

  2. templateref html内容,angular之ng-template模板加载

    angular之ng-template模板加载 2019-01-07 编程之家 https://www.jb51.cc 编程之家收集整理的这篇文章主要介绍了angular之ng-template模板加 ...

  3. 钓鱼篇-利用RLO隐藏exe文件捆绑office免杀-远程模板加载上线CS

    RLO伪装图片执行 利用msf生成木马x.exe msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.96.128 LPORT=4444 ...

  4. 人脸识别的模板加载问题

    人脸识别的模板加载问题 最近在做一个Android的考勤机项目,要求支持人脸.指纹.刷卡签到,人脸部分用的是中控的人脸识别模块. 在测试环境下人脸识别一切正常,切换到现场环境后刚开始也都没问题,过了几 ...

  5. Angularjs标签模板加载原理

    前言 Angularjs提供多种模板加载方案. 最基础的为通过预先声明路径的方式,通过Ajax获取. 使用诸如gulp-html2js构建工具,将HTML模板转化为js文件使用. 使用script标签 ...

  6. 【Youtobe trydjango】Django2.2教程和React实战系列八【渲染数据库数据与模板加载顺序探究】

    [Youtobe trydjango]Django2.2教程和React实战系列八[渲染数据库数据与模板加载顺序探究] 1. 准备数据 2. 渲染数据库数据到模板 3. 如何在app里加载django ...

  7. 转载:页面加载swf插件:swfobject

    转自:http://www.cnblogs.com/analyzer/articles/1299592.html 我一直都在用SWFObject 插入flash,好处多多,代码简洁,不会出现微软的&q ...

  8. java引入resource下的模板_Beetl自定义ResourceLoader,实现特殊的模板加载需求

    一直以来,有个目标是:使用Beetl的时候,如果web root 里有模板文件,则beetl从web root里加载.如果没有,则从jar里加载,或者从Db里加载. 这样,工程里大量相同的模板模板可以 ...

  9. zencart目录文件说明 zencart模板加载方式

    zencart建站必备的五个插件 zencart的源码文件中第一句话往往是包含include目录下的application_top.php文件,如:require('includes/applicat ...

最新文章

  1. 最新!全球学术排名出炉:18所中国大学位居世界100强
  2. 独家解析英伟达最新GPU-A100对AI行业带来的影响
  3. U3D的结构体堆分配栈分配
  4. python开三次方_python实现三次样条插值
  5. Android 通知栏Notification
  6. Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合...
  7. FreeRTOS信号量---二值信号量
  8. 微信JS-SDK选择相册或拍照并上传PHP实现
  9. 源码编译安装gcc-5.3.0
  10. 行存储索引改换成列存储索引_列存储索引增强功能–数据压缩,估计和节省
  11. hdu5141 线段树
  12. 怎么运行java程序_怎么运行java程序?运行java程序的一般步骤?
  13. android viewholder模式,Android ViewHolder模式
  14. 金融理论与实务公式汇总
  15. 近期活动盘点:个人消费信贷与风险控制讲座、清华大学教育大数据论坛
  16. 软件概要设计说明书模版
  17. OLED屏显示和汉字点阵编码原理
  18. 送书 | 《数据产品经理:实践进阶》
  19. 高等代数期末考试题库及答案_《高等代数》期末闭卷考试题及答案.pdf
  20. SSM项目_配置双数据源

热门文章

  1. 微信公众号获取用户头像的踩坑经历
  2. 按照快递公司筛选物流单号
  3. 人工智能——家居式智能监控服务机器人
  4. 该如何去学编程?[转帖]
  5. npm ERR! cb() never called! 解决办法
  6. org.tigris.subversion.javahl.ClientException: URL access forbidden for unkno
  7. ubuntu 系统 如何生成requirement.txt
  8. 西门子1200PLC与手机TCP通信
  9. 从简开始,逐步深入 写一个自己的Promise
  10. Linux系统下,对两幅bmp图像进行左右拼接,合成一个bmp图