初学velocity

跟学习其它技术一样,首先到官网去下载必要的包,下载地址:http://velocity.apache.org/download.cgi目前使用的是velocity 1.6.3,由于自己的E文水平一般,在使用之前也到网上搜索了相关文章,然后根据前辈们的指导和自己的实践结合.记录下此文,以便以后能快速回忆.

一、在eclipse 中新建一个工程,把包velocity-1.6.3.jar到在WEB-INF/lib下,

二、新建了一个hello.vm的测式模板

Html代码  

  1. <html>
  2. <head></head>
  3. <body>
  4. HELLO! $name,Welcome to velocity!
  5. </body>
  6. </html>

三、新建一个java属性文件 velocity.properties,参考了别人的配置示例,详细的说明以后再理解

Java代码  

  1. #Velocity.properties配置示例
  2. # 如果需要系统从WEB-INF/classes路径加载Velocity的模板文件,取消下面两行的注释
  3. #resource.loader=class
  4. #class.resource.loader.class=org.apache.Velocity.runtime.resource.loader.ClasspathResourceLoader
  5. #如需禁止系统通过文件系统加载模板文件,注释如下两行
  6. resource.loader=file
  7. file.resource.loader.path=D:\Workspaces\MyEclipse 8.5\velocity\WebRoot\WEB-INF\velocityTempalte
  8. #确定从何处加载velocity的模板文件
  9. file.resource.loader.cache=false
  10. #设置读取模板文件的解码格式,GB2312是为了支持中文
  11. input.encoding=gb2312
  12. #配置输出视图文件的解码格式,GB2312是为了支持中文
  13. output.encoding=gb2312

四、新建一个测式类VelocityTest.java

Java代码  

  1. package velocity.test;
  2. import java.io.FileOutputStream;
  3. import java.io.PrintWriter;
  4. import java.io.StringWriter;
  5. import org.apache.velocity.Template;
  6. import org.apache.velocity.VelocityContext;
  7. import org.apache.velocity.app.Velocity;
  8. public class VelocityTest {
  9. public static void main(String[] args) {
  10. try {
  11. // 初始化
  12. Velocity.init("D:\\Workspaces\\MyEclipse 8.5\\velocity\\WebRoot\\WEB-INF\\velocity.properties");
  13. //取得velocity上下文
  14. VelocityContext context = new VelocityContext();
  15. context.put("name", "sea");
  16. Template template = Velocity.getTemplate("hello.vm");
  17. StringWriter writer = new StringWriter();
  18. template.merge(context, writer);
  19. PrintWriter filewriter = new PrintWriter(new FileOutputStream("d:\\a.html"),true);
  20. filewriter.println(writer.toString());
  21. filewriter.close();
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. }

最后运行该类时出现如下错误:

Java代码  

  1. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/ExtendedProperties

发现缺少了集合包,把velicity.1.6.3解压后的lib目录下的commons-collections-3.2.1.jar拷入工程的lib目录下,继续运行,还是出现以后错误:

Java代码  

  1. org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.ServletLogChute with the current runtime configuration.
  2. at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:206)
  3. at org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:255)
  4. at org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:795)
  5. at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:250)
  6. at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:615)
  7. at org.apache.velocity.runtime.RuntimeSingleton.init(RuntimeSingleton.java:243)
  8. at org.apache.velocity.app.Velocity.init(Velocity.java:93)
  9. at velocity.test.VelocityTest.main(VelocityTest.java:17)
  10. Caused by: java.lang.UnsupportedOperationException: Could not retrieve ServletContext from application attributes
  11. at org.apache.velocity.runtime.log.ServletLogChute.init(ServletLogChute.java:73)
  12. at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:157)
  13. ... 7 more

最后分别把 commons-lang-2.4.jar和commons-logging-1.1.jar拷入lib目录才正常

输出d:\a.html下的文件如下

Java代码  

  1. <html>
  2. <head></head>
  3. <body>
  4. HELLO! sea,Welcome to velocity!
  5. </body>
  6. </html>
时间: 2024-10-31 19:40:45

初学velocity的相关文章

velocity模板加载

http://hi.baidu.com/ly_dayu/item/828b09c5c3c5e547a8ba9409 velocity使用基本来说比较简单,但在加载模板时老出问题,很多初学者经常会遇到找不到模板这种异常.本文就针对目前常用的三种模板加载方式做以说明.  一.velocity默认的加载方式(文件加载方式) Java代码   package com.velocity.test; import java.io.StringWriter; import java.util.Properti

eclipse开发velocity实例(初学)

开发环境         Eclipse Java EE IDE for Web Developers.(Version: Helios Service Release 1) jdk1.6.0_07 apache-tomcat-6.0.10 首先需要为eclipse安装velocity编辑插件: 在Eclipse的Help->Install New Software... 点击“Add加 Veloeclipse,值:http://veloeclipse.googlecode.com/svn/tr

初学Java web(转)

转自 http://www.oschina.net/question/12_52027 OSCHINA 软件库有一个分类——Web框架,该分类中包含多种编程语言的将近500个项目. Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处理有关,形成一个基础,在开发别的应用项目的时候则可以从这个剥离出来的基础做起,让开发者更关注更具体的业务问题,而不是Web的请求和响应的控制. 框架很多,但套路基本类似,帮你

初学 Java Web 开发,请远离各种框架,从 Servlet 开发

Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处 理有关,形成一个基础,在开发别的应用项目的时候则可以从这个剥离出来的基础做起,让开发者更关注更具体的业务问题,而不是Web的请求和响应的控制. 框架很多,但套路基本类似,帮你隐藏很多关于 HTTP 协议细节内容,专注功能开发. 但对一个初学者来说,过早的接触框架往往是事倍功半!同样一个问题,换一种框架你可能需要从头开始研究. 下面是针对初学 Java

STM32初学Keil4编译时出现 Error:Failed to execute &#39;BIN40/Armcc&#39;

一种是在系统开始--运行里输入cmd,查看armcc状态.详情见推文: http://blog.csdn.net/hicui/article/details/7350805(笔记记录,请勿见怪) 都没有问题的话,那么可以尝试: 在keil里的菜单栏依次选择Project->Manage->Components,Environment andBooks(CEB)(或者直接点击工具栏的图标), 然后在CEB里选择Folders/Extensions标签页,在RealView Folder里选择ke

mongodb 初学 目录

mongodb 初学 索引 啦啦啦 MongoDB 教程 NoSQL 简介 MongoDB 简介 Windows 平台安装 MongoDB Linux平台安装MongoDB mongodb 在 Ubuntu系统上的安装及卸载 Mongodb启动命令mongod参数说明 Mac OSX 平台安装 MongoDB MongoDB 概念解析 MongoDB - 连接 MongoDB 创建数据库 MongoDB 删除数据库 MongoDB 插入文档 MongoDB 更新文档 MongoDB 删除文档 M

JSP FreeMarker Velocity 原理

JSP原理 JSP的运行原理:JSP 本质上是一个Servlet. 每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet 程序,然后再把这个 Servlet 源程序编译成Servlet 的class 类文件.然后再由WEB 容器(Servlet容器)像调用 Servlet 程序一样的方式装载和解释执行这个由JSP 页面翻译成的 Servlet 程序. FreeMarker 和 velocity 原理 在Struts2框架下,Struts2框架充当了之前的Servlet角色,只

初学ArcGIS API for JavaScript

初学ArcGIS API for JavaScript 对于初学者来说,关于esri提供的一些样式和dojo自带的一些样式还是需要有一定的了解,这块在<WebGIS开发从基础到实践>讲解的特别详细,在这里以笔记的形式来帮助自己加以理解和记忆. esri.css样式主要用于ESRI提供的小部件与组件,比如地图.信息框等.此外,还可以引用Dojo提供的样式表,Dojo提供了4组样式,分别是claro\tundra\soria以及nihilo,每种是一组定义用户界面的字体.颜色与大小等设置.在Arc

Velocity初探小结--Velocity在spring中的配置和使用

最近正在做的项目前端使用了Velocity进行View层的数据渲染,之前没有接触过,草草过了一遍,就上手开始写,现在又回头细致的看了一遍,做个笔记. velocity是一种基于java的模板引擎技术,有点类似与JSP,它允许页面设计者引用Java中定义的方法.前端页面设计者和后端Java开发者能够同时使用MVC的模式开发网站,这样前端能够把精力放在页面的设计上,后端也可以把精力放在代码开发上.Velocity把Java代码从Web页面中分离, 使网站可维护性更强. 注:项目使用的是Spring+