`
freesea
  • 浏览: 128881 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

初学velocity

阅读更多

     很久之前就已经听说过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>
	

 

 

虽然是一个简单的应用,每个部份等深入了解之后,再继续纳入应用中

分享到:
评论
1 楼 Cyclone_C 2013-11-20  
class.resource.loader.class=org.apache.Velocity.runtime.resource.loader.ClasspathResourceLoader
应该是class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader     

相关推荐

    velocity初学者资料

    在初学者资料中,我们首先了解了Velocity的基本概念。Velocity的主要优点包括它简洁的语法、高效的性能以及良好的可扩展性。通过集成Struts2,Velocity可以被用于构建动态Web应用程序,帮助开发者更方便地管理视图层...

    velocity+servlet的初学者demo

    这个"velocity+servlet的初学者demo"是为那些希望了解如何将Velocity与Servlet结合使用的初学者准备的。 Velocity的工作原理是通过模板语言来分离内容、表现和逻辑。它的模板文件包含静态文本和Velocity指令,这些...

    velocity和freemarker的比较

    - **学习曲线**:Velocity的学习曲线较平缓,适合初学者,而FreeMarker可能需要更多时间去熟悉其高级特性。 - **灵活性**:FreeMarker的灵活性更强,可以更好地处理复杂逻辑,而Velocity更强调模板的纯粹性,尽量...

    velocity中文

    此外,可以参考 Velocity中文手册,它提供了详细的中文解释,对于初学者来说更加友好。 ### 7. 性能优化 Velocity的性能优化包括合理设置缓存策略、避免在模板中执行复杂逻辑以及优化VTL表达式。理解 Velocity的...

    JAVA的Velocity语法学习

    它们会详细介绍Velocity的使用方法、语法特性以及最佳实践,对于初学者来说非常有帮助。同时,Apache官网也有详细的Velocity文档和示例,可以帮助深入理解并熟练运用Velocity。 通过以上介绍,我们可以看到Velocity...

    velocity学习资料.zip

    在这个“velocity学习资料.zip”压缩包中,可能包含了关于Velocity的基本概念、语法、最佳实践以及一些示例代码,帮助初学者或有经验的开发者更好地理解和应用Velocity。 Velocity的工作原理基于MVC(Model-View-...

    apache velocity介绍及资料

    Apache Velocity 是一个开源的Java模板引擎,它允许开发者将HTML、XML或者其他格式的文档与应用程序逻辑分离。...对于初学者来说,这是一个非常有价值的资源,能够帮助快速上手并熟练运用Apache Velocity。

    velocity-1.6.2.zip

    3. **examples** 文件夹:提供了使用 Velocity 的示例代码,这些示例可以帮助初学者快速上手,理解如何在实际项目中应用 Velocity。 4. **src** 文件夹:包含 Velocity 源代码,对于开发者来说,这是一个宝贵的学习...

    velocity经典4pdf中文教程

    Velocity,作为一个开源的Java模板引擎,是Apache软件基金会下的一个项目,主要被用于Web应用程序,以分离业务逻辑和表示层。...无论你是初学者还是经验丰富的开发者,这套教程都能提供宝贵的知识和实践经验。

    Velocity 模版

    在实际项目中,`Java的模板引擎Velocity初体验.doc` 可能包含了初学者如何快速上手 Velocity 的步骤和常见问题。而 `Velocity2.ppt` 很可能是一个详细的 Velocity 进阶教程,涵盖了高级特性如宏、自定义工具类的使用...

    velocity 入门文档及应用源码,很适合做自动代码生成

    通过阅读这份文档,初学者可以了解到如何创建和使用Velocity模板,以及如何在模板中嵌入Java变量和表达式。指南还会讲解如何处理条件语句、循环结构,以及如何调用Velocity工具库中的方法。 **Velocity中文手册** ...

    velocity-1.6.zip

    4. **examples**:可能包含示例代码或模板,帮助初学者快速上手。 通过阅读这些文档和参考示例,开发者可以深入理解Velocity的工作原理,并在实际项目中有效地使用Velocity来生成动态内容。在1.6版本中,可能已经...

    velocity教程

    velocity语法,Velocity+Java开发指南中文版,struts2 与velocity1.6及velocity tools1.4的整合,Velocity+Spring+Ibatis框架搭建说明文档,Velocity详解(初学者建议看)

    velocity Java开发指南中文版

    ### Velocity Java开发指南知识点概述 #### 一、简介与背景 **Velocity** 是一个基于 Java 的模板引擎,它能够将模型数据与表示层分离,从而让开发者能够更加...无论是初学者还是有经验的开发者都能从中受益匪浅。

    简单的velocity工程

    这个"简单的velocity工程"应该是包含了一个基本的Velocity模板语言(VTL)使用示例,便于初学者理解和实践。 Velocity工程的核心是Velocity模板文件(通常以`.vm`为扩展名),它与Java代码相结合,允许开发者将逻辑...

    struts2与velocity集成 实例

    对于初学者来说,这是一个很好的起点,可以快速理解MVC框架与模板引擎的协同工作方式。通过实践这个实例,你可以深入学习到如何在Struts2中使用Velocity模板来构建动态网页,进一步提升你的Java Web开发技能。

    Velocity Suite 1.2.3

    **Velocity Suite 1.2.3 - Dreamweaver 插件详解** Velocity Suite 1.2.3 是一款专为Adobe Dreamweaver设计的插件,它为...无论是初学者还是经验丰富的开发者,都可以通过 Velocity Suite 获得更优秀的开发体验。

Global site tag (gtag.js) - Google Analytics