velocity 二 开发篇

先来看看velocity是怎么工作的?

在应用中使用velocity,一般需要以下的几个步骤:
  •   初始化Velocity,可以使用单例,或者运行期实例
  •   创建context对象,用于包括相应的变量
  •   在context中增加相应的数据
  •   选择模板
  •   合并模板,产生输出

如下的例子:
java 代码
 
  1. import java.io.StringWriter;  
  2. import org.apache.velocity.VelocityContext;  
  3. import org.apache.velocity.Template;  
  4. import org.apache.velocity.app.Velocity;  
  5. import org.apache.velocity.exception.ResourceNotFoundException;  
  6. import org.apache.velocity.exception.ParseErrorException;  
  7. import org.apache.velocity.exception.MethodInvocationException;  
  8.   
  9. Velocity.init();                            1  
  10.   
  11. VelocityContext context = new VelocityContext();    2  
  12.   
  13. context.put( "name"new String("Velocity") );        3  
  14.   
  15. Template template = null;  
  16.   
  17. try  
  18. {  
  19.    template = Velocity.getTemplate("mytemplate.vm");    4  
  20. }  
  21. catch( ResourceNotFoundException rnfe )  
  22. {  
  23.    // couldn't find the template  
  24. }  
  25. catch( ParseErrorException pee )  
  26. {  
  27.   // syntax error: problem parsing the template  
  28. }  
  29. catch( MethodInvocationException mie )  
  30. {  
  31.   // something invoked in the template  
  32.   // threw an exception  
  33. }  
  34. catch( Exception e )  
  35. {}  
  36.   
  37. StringWriter sw = new StringWriter();  
  38.   
  39. template.merge( context, sw );                5  

上面的例子使用的是单例模式,可以使用运行期实例:
java 代码
 
  1. VelocityEngine ve = new VelocityEngine();  
  2. ve.setProperty(  
  3.     VelocityEngine.RUNTIME_LOG_LOGSYSTEM, this);  
  4. ve.init();  

关于context
context,类似于map环境,包括两个主要的方法:
java 代码
 
  1. public Object put(String key, Object value);  
  2. public Object get(String key);  

而默认的VelocityContext是使用map封装,保存相应的变量

当然,如果想和其他环境合并,如FacesContext中的Elcontext,需要定义自己的实现类。

Context chaining,
context支持多个context串,如下:
java 代码
 
  1. VelocityContext context1 = new VelocityContext();  
  2.   
  3. context1.put("name","Velocity");  
  4. context1.put("project""Jakarta");  
  5. context1.put("duplicate""I am in context1");  
  6.   
  7. VelocityContext context2 = new VelocityContext( context1 );  
  8.   
  9. context2.put("lang""Java" );  
  10. context2.put("duplicate""I am in context2");  
  11.   
  12. template.merge( context2, writer );  


Velocity不仅可以用于提供模板输出,而且可以直接对字符串进行评估:
java 代码
 
  1. StringWriter w = new StringWriter();  
  2. Velocity.mergeTemplate("testtemplate.vm", context, w );  
  3.   
  4. String s = "We are using $project $name to render this.";  
  5. w = new StringWriter();  
  6. Velocity.evaluate( context, w, "mystring", s );  


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值