velocity虽然已经为我们提供了一些资源加载器,基本已经可以满足大部分的用户需求。有的时候还需要我们必须手动去写一些,比如:我们打算采用String的模板而不是vm文件形式,为的是将模板存入db中。
这是我们只需要继承org.apache.velocity.runtime.resource.ResourceLoader 并实现我们想要的功能。
下面的例子就是拿上面的需求来进行一个简单的实现。
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import org.apache.commons.collections.ExtendedProperties;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.runtime.resource.Resource;
import org.apache.velocity.runtime.resource.loader.ResourceLoader;
public class MyResourceLoader extends ResourceLoader {
@Override
public long getLastModified(Resource arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public InputStream getResourceStream(String arg0)
throws ResourceNotFoundException {
InputStream result = null;
if (arg0 == null || arg0.length() == 0) {
throw new ResourceNotFoundException(
"模板没有被定义~!");
}
result = new ByteArrayInputStream(arg0.getBytes());
return result;
}
@Override
public void init(ExtendedProperties arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean isSourceModified(Resource arg0) {
// TODO Auto-generated method stub
return false;
}
}
我们只需实现getResourceStream方法就可以了。很简单吧
应用就更简单了,基本上和我们的上一个例子没有区别
import java.io.StringWriter;
import java.util.Properties;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
public class Simple2 {
/**
* 入门,自定义资源加载器
*/
public static void main(String[] args) {
// 创建引擎
VelocityEngine ve=new VelocityEngine();
Properties p=new Properties();
p.put("resource.loader","srl");
p.put("srl.resource.loader.class","test.velocity.MyResourceLoader");
try {
//进行初始化操作
ve.init(p);
//加载模板,设定模板编码
Template t=ve.getTemplate("你好 $name !\r\n$project project.","gbk");
//设置初始化数据
VelocityContext context = new VelocityContext();
context.put("name", "张三");
context.put("project", "Jakarta");
//设置输出
StringWriter writer = new StringWriter();
//将环境数据转化输出
t.merge(context, writer);
//简化操作
//ve.mergeTemplate("test/velocity/simple1.vm", "gbk", context, writer );
System.out.println(writer.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
主要就是 p.put("resource.loader","srl");
p.put("srl.resource.loader.class","test.velocity.MyResourceLoader");
这两行,来定义资源加载器
这样Template t=ve.getTemplate("你好 $name !\r\n$project project.","gbk");
模板中的内容我们就可以通过数据库读取出来
该实现虽然简单,不过我认为还是比较有用。
分享到:
相关推荐
赠送jar包:velocity-engine-core-2.3.jar; 赠送原API文档:velocity-engine-core-2.3-javadoc.jar; 赠送源代码:velocity-engine-core-2.3-sources.jar; 赠送Maven依赖信息文件:velocity-engine-core-2.3.pom;...
赠送jar包:velocity-engine-core-2.3.jar 赠送原API文档:velocity-engine-core-2.3-javadoc.jar 赠送源代码:velocity-engine-core-2.3-sources.jar 包含翻译后的API文档:velocity-engine-core-2.3-javadoc-...
Velocity通过提供一个简单的模板语言来实现这一目标,使得非程序员也能轻松编辑模板,而程序员则专注于后端业务逻辑的实现。在本教程中,我们将深入探讨Velocity的基础使用方法。 1. **安装与引入** 在Java项目中...
velocity 2.0 包需要的 jar 包 官方下载的,测试过了,可以运行 Demo 网上都有,关键几行代码: // ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "file"); // 按文件加载 // ve.init(); // Template t = ...
赠送jar包:velocity-tools-generic-3.1.jar; 赠送原API文档:velocity-tools-generic-3.1-javadoc.jar; 赠送源代码:velocity-tools-generic-3.1-sources.jar; 赠送Maven依赖信息文件:velocity-tools-generic-...
velocity-tools-2.0.jar velocity-tools-2.0.jar velocity-tools-2.0.jar velocity-tools-2.0.jar velocity-tools-2.0.jar
2. **velocity-1.6.2-dep.jar**: 这是Velocity的1.6.2版本,带有依赖项。这个版本相比1.5,可能包含了更多的改进和修复,比如性能优化、bug修复、新的特性和API。"dep"表示这个JAR文件包含了所有必要的依赖,使得...
velocity-engine-core-2.1.jar
赠送jar包:velocity-tools-generic-3.1.jar 赠送原API文档:velocity-tools-generic-3.1-javadoc.jar 赠送源代码:velocity-tools-generic-3.1-sources.jar 包含翻译后的API文档:velocity-tools-generic-3.1-...
在"velocity-tools-2.0-src.zip"这个压缩包中,包含了 Velocity Tools 2.0 版本的源代码,这为我们深入理解并定制这个工具集提供了可能。 1. **Velocity 框架介绍** Velocity 是一个基于 Java 的模板引擎,它允许...
velocity-dep-1.4.jar velocity-dep-1.4.jar
velocity-tools-view-1.4.jar
velocity-tools-view-2.0.jar
"velocity-1.7-dep.jar.zip" 是一个包含 Velocity 框架1.7版本依赖库的压缩文件。Velocity 是 Apache 软件基金会的一个开源项目,它是一个基于 Java 的模板引擎,主要用于生成动态 Web 内容。这个特定的版本(1.7)...
注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
velocity(1.1---1.5所有包) velocity-1.4 velocity-1.5 velocity-dep-1.3.1 velocity-tools-1.1 velocity-tools-generic-1.2 velocity-tools-view-1.2 velocity-tools-view-1.3
• commons-collections-3.2.jar • velocity-1.4.jar • velocity-tools-view-1.2.jar • avalon-logkit-2.1.jar
velocity-tools-generic-2.0.jar
velocity-tools-view-2.0-beta1.jar, 供大家使用
velocity-tools-1.4.jar