打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
velocity基础教程
velocity虽然已经为我们提供了一些资源加载器,基本已经可以满足大部分的用户需求。有的时候还需要我们必须手动去写一些,比如:我们打算采用String的模板而不是vm文件形式,为的是将模板存入db中。
这是我们只需要继承org.apache.velocity.runtime.resource.ResourceLoader 并实现我们想要的功能。
下面的例子就是拿上面的需求来进行一个简单的实现。
Java代码
 
  1. import java.io.ByteArrayInputStream;      
  2. import java.io.InputStream;      
  3.      
  4. import org.apache.commons.collections.ExtendedProperties;      
  5. import org.apache.velocity.exception.ResourceNotFoundException;      
  6. import org.apache.velocity.runtime.resource.Resource;      
  7. import org.apache.velocity.runtime.resource.loader.ResourceLoader;      
  8.      
  9. public class MyResourceLoader extends ResourceLoader {      
  10.      
  11.     @Override     
  12.     public long getLastModified(Resource arg0) {      
  13.         // TODO Auto-generated method stub      
  14.         return 0;      
  15.     }      
  16.      
  17.     @Override     
  18.     public InputStream getResourceStream(String arg0)      
  19.             throws ResourceNotFoundException {      
  20.         InputStream result = null;      
  21.      
  22.         if (arg0 == null || arg0.length() == 0) {      
  23.             throw new ResourceNotFoundException(      
  24.                     "模板没有被定义~!");      
  25.         }      
  26.         result = new ByteArrayInputStream(arg0.getBytes());      
  27.         return result;      
  28.     }      
  29.      
  30.     @Override     
  31.     public void init(ExtendedProperties arg0) {      
  32.         // TODO Auto-generated method stub      
  33.      
  34.     }      
  35.      
  36.     @Override     
  37.     public boolean isSourceModified(Resource arg0) {      
  38.         // TODO Auto-generated method stub      
  39.         return false;      
  40.     }      
  41.      
  42. }    

我们只需实现getResourceStream方法就可以了。很简单吧
应用就更简单了,基本上和我们的上一个例子没有区别
Java代码
 
  1. import java.io.StringWriter;      
  2. import java.util.Properties;      
  3.      
  4. import org.apache.velocity.Template;      
  5. import org.apache.velocity.VelocityContext;      
  6. import org.apache.velocity.app.VelocityEngine;      
  7.      
  8. public class Simple2 {      
  9.      
  10.     /**    
  11.      * 入门,自定义资源加载器    
  12.      */     
  13.     public static void main(String[] args) {      
  14.         // 创建引擎      
  15.         VelocityEngine ve=new VelocityEngine();      
  16.         Properties   p=new   Properties();          
  17.         p.put("resource.loader","srl");        
  18.         p.put("srl.resource.loader.class","test.velocity.MyResourceLoader");        
  19.              
  20.         try {      
  21.             //进行初始化操作      
  22.             ve.init(p);      
  23.             //加载模板,设定模板编码      
  24.             Template t=ve.getTemplate("你好 $name !\r\n$project project.","gbk");      
  25.             //设置初始化数据      
  26.             VelocityContext context = new VelocityContext();      
  27.             context.put("name""张三");      
  28.             context.put("project""Jakarta");      
  29.             //设置输出      
  30.             StringWriter writer = new StringWriter();      
  31.             //将环境数据转化输出      
  32.             t.merge(context, writer);      
  33.             //简化操作      
  34.             //ve.mergeTemplate("test/velocity/simple1.vm", "gbk", context, writer );      
  35.             System.out.println(writer.toString());      
  36.         } catch (Exception e) {      
  37.             e.printStackTrace();      
  38.         }      
  39.               
  40.     }      
  41.      
  42. }    

主要就是 p.put("resource.loader","srl"); 
        p.put("srl.resource.loader.class","test.velocity.MyResourceLoader"); 
这两行,来定义资源加载器
这样Template t=ve.getTemplate("你好 $name !\r\n$project project.","gbk");
模板中的内容我们就可以通过数据库读取出来

该实现虽然简单,不过我认为还是比较有用。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
CHAPTER 5 构建Hello World示例 - Velocity空间 - Blog...
Velocity是如何工作的
Android 异步加载神器 Loader使用
velocity 例子
Velocity之Web实践- - - 刘文涛 - BlogJava
Velocity 的应用示例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服