很久之前就已经听说过velocity,但是没有花些时间去认真了解它,由于现在自己要开发一个大的项目,在开发之前把过去的种种技术做一个回顾及加强.
Velocity是一个开放源码的模版引擎,具体可以参考:http://jakarta.apache.org/velocity/index.html 了解Velocity的最新信息。 Velocity允许我们在模版中设定变量,然后在运行时,动态的将数据插入到模版中,替换这些变量.生成最终表现层页面.
跟学习其它技术一样,首先到官网去下载必要的包,下载地址:http://velocity.apache.org/download.cgi目前使用的是velocity 1.6.3,由于自己的E文水平一般,在使用之前也到网上搜索了相关文章,然后根据前辈们的指导和自己的实践结合.记录下此文,以便以后能快速回忆.
一、在eclipse 中新建一个工程,把包velocity-1.6.3.jar到在WEB-INF/lib下,
二、新建了一个hello.vm的测式模板
<html>
<head></head>
<body>
HELLO! $name,Welcome to velocity!
</body>
</html>
三、新建一个java属性文件 velocity.properties,参考了别人的配置示例,详细的说明以后再理解
#Velocity.properties配置示例
# 如果需要系统从WEB-INF/classes路径加载Velocity的模板文件,取消下面两行的注释
#resource.loader=class
#class.resource.loader.class=org.apache.Velocity.runtime.resource.loader.ClasspathResourceLoader
#如需禁止系统通过文件系统加载模板文件,注释如下两行
resource.loader=file
file.resource.loader.path=D:\Workspaces\MyEclipse 8.5\velocity\WebRoot\WEB-INF\velocityTempalte
#确定从何处加载velocity的模板文件
file.resource.loader.cache=false
#设置读取模板文件的解码格式,GB2312是为了支持中文
input.encoding=gb2312
#配置输出视图文件的解码格式,GB2312是为了支持中文
output.encoding=gb2312
四、新建一个测式类VelocityTest.java
package velocity.test;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
public class VelocityTest {
public static void main(String[] args) {
try {
// 初始化
Velocity.init("D:\\Workspaces\\MyEclipse 8.5\\velocity\\WebRoot\\WEB-INF\\velocity.properties");
//取得velocity上下文
VelocityContext context = new VelocityContext();
context.put("name", "sea");
Template template = Velocity.getTemplate("hello.vm");
StringWriter writer = new StringWriter();
template.merge(context, writer);
PrintWriter filewriter = new PrintWriter(new FileOutputStream("d:\\a.html"),true);
filewriter.println(writer.toString());
filewriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
最后运行该类时出现如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/ExtendedProperties
发现缺少了集合包,把velicity.1.6.3解压后的lib目录下的commons-collections-3.2.1.jar拷入工程的lib目录下,继续运行,还是出现以后错误:
org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.ServletLogChute with the current runtime configuration.
at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:206)
at org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:255)
at org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:795)
at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:250)
at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:615)
at org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:243)
at org.apache.velocity.app.Velocity.init(Velocity.java:93)
at velocity.test.VelocityTest.main(VelocityTest.java:17)
Caused by: java.lang.UnsupportedOperationException: Could not retrieve ServletContext from application attributes
at org.apache.velocity.runtime.log.ServletLogChute.init(ServletLogChute.java:73)
at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:157)
... 7 more
最后分别把 commons-lang-2.4.jar和commons-logging-1.1.jar拷入lib目录才正常
输出d:\a.html下的文件如下
<html>
<head></head>
<body>
HELLO! sea,Welcome to velocity!
</body>
</html>
虽然是一个简单的应用,每个部份等深入了解之后,再继续纳入应用中
分享到:
相关推荐
在初学者资料中,我们首先了解了Velocity的基本概念。Velocity的主要优点包括它简洁的语法、高效的性能以及良好的可扩展性。通过集成Struts2,Velocity可以被用于构建动态Web应用程序,帮助开发者更方便地管理视图层...
这个"velocity+servlet的初学者demo"是为那些希望了解如何将Velocity与Servlet结合使用的初学者准备的。 Velocity的工作原理是通过模板语言来分离内容、表现和逻辑。它的模板文件包含静态文本和Velocity指令,这些...
- **学习曲线**:Velocity的学习曲线较平缓,适合初学者,而FreeMarker可能需要更多时间去熟悉其高级特性。 - **灵活性**:FreeMarker的灵活性更强,可以更好地处理复杂逻辑,而Velocity更强调模板的纯粹性,尽量...
此外,可以参考 Velocity中文手册,它提供了详细的中文解释,对于初学者来说更加友好。 ### 7. 性能优化 Velocity的性能优化包括合理设置缓存策略、避免在模板中执行复杂逻辑以及优化VTL表达式。理解 Velocity的...
它们会详细介绍Velocity的使用方法、语法特性以及最佳实践,对于初学者来说非常有帮助。同时,Apache官网也有详细的Velocity文档和示例,可以帮助深入理解并熟练运用Velocity。 通过以上介绍,我们可以看到Velocity...
在这个“velocity学习资料.zip”压缩包中,可能包含了关于Velocity的基本概念、语法、最佳实践以及一些示例代码,帮助初学者或有经验的开发者更好地理解和应用Velocity。 Velocity的工作原理基于MVC(Model-View-...
Apache Velocity 是一个开源的Java模板引擎,它允许开发者将HTML、XML或者其他格式的文档与应用程序逻辑分离。...对于初学者来说,这是一个非常有价值的资源,能够帮助快速上手并熟练运用Apache Velocity。
3. **examples** 文件夹:提供了使用 Velocity 的示例代码,这些示例可以帮助初学者快速上手,理解如何在实际项目中应用 Velocity。 4. **src** 文件夹:包含 Velocity 源代码,对于开发者来说,这是一个宝贵的学习...
Velocity,作为一个开源的Java模板引擎,是Apache软件基金会下的一个项目,主要被用于Web应用程序,以分离业务逻辑和表示层。...无论你是初学者还是经验丰富的开发者,这套教程都能提供宝贵的知识和实践经验。
在实际项目中,`Java的模板引擎Velocity初体验.doc` 可能包含了初学者如何快速上手 Velocity 的步骤和常见问题。而 `Velocity2.ppt` 很可能是一个详细的 Velocity 进阶教程,涵盖了高级特性如宏、自定义工具类的使用...
通过阅读这份文档,初学者可以了解到如何创建和使用Velocity模板,以及如何在模板中嵌入Java变量和表达式。指南还会讲解如何处理条件语句、循环结构,以及如何调用Velocity工具库中的方法。 **Velocity中文手册** ...
4. **examples**:可能包含示例代码或模板,帮助初学者快速上手。 通过阅读这些文档和参考示例,开发者可以深入理解Velocity的工作原理,并在实际项目中有效地使用Velocity来生成动态内容。在1.6版本中,可能已经...
velocity语法,Velocity+Java开发指南中文版,struts2 与velocity1.6及velocity tools1.4的整合,Velocity+Spring+Ibatis框架搭建说明文档,Velocity详解(初学者建议看)
### Velocity Java开发指南知识点概述 #### 一、简介与背景 **Velocity** 是一个基于 Java 的模板引擎,它能够将模型数据与表示层分离,从而让开发者能够更加...无论是初学者还是有经验的开发者都能从中受益匪浅。
这个"简单的velocity工程"应该是包含了一个基本的Velocity模板语言(VTL)使用示例,便于初学者理解和实践。 Velocity工程的核心是Velocity模板文件(通常以`.vm`为扩展名),它与Java代码相结合,允许开发者将逻辑...
对于初学者来说,这是一个很好的起点,可以快速理解MVC框架与模板引擎的协同工作方式。通过实践这个实例,你可以深入学习到如何在Struts2中使用Velocity模板来构建动态网页,进一步提升你的Java Web开发技能。
**Velocity Suite 1.2.3 - Dreamweaver 插件详解** Velocity Suite 1.2.3 是一款专为Adobe Dreamweaver设计的插件,它为...无论是初学者还是经验丰富的开发者,都可以通过 Velocity Suite 获得更优秀的开发体验。