Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提 供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当 作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。

Java代码  
  1. package com.velocity.demo;
  2. import java.io.StringWriter;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6. import java.util.Properties;
  7. import org.apache.velocity.Template;
  8. import org.apache.velocity.VelocityContext;
  9. import org.apache.velocity.app.Velocity;
  10. import org.apache.velocity.app.VelocityEngine;
  11. import org.apache.velocity.exception.ParseErrorException;
  12. import org.apache.velocity.exception.ResourceNotFoundException;
  13. public class PromotedVelocityDemo
  14. {
  15. public static void main(String[] args) throws Exception, ParseErrorException, Exception
  16. {
  17. VelocityEngine ve = getVelocityEngine();
  18. VelocityContext context = getVelocityContext();
  19. Template template = ve.getTemplate("com/velocity/demo/promotedTemple");
  20. if(template != null){
  21. StringWriter getWriter = new StringWriter();
  22. template.merge(context, getWriter);
  23. System.out.println(getWriter);
  24. }
  25. }
  26. public static ArrayList getNames() {
  27. ArrayList list = new ArrayList();
  28. list.add("刘少奇");
  29. list.add("李逵");
  30. list.add("王熙凤");
  31. list.add("李四光");
  32. return list;
  33. }
  34. public static ArrayList getNamesMap() {
  35. ArrayList list = new ArrayList();
  36. Map map = new HashMap();
  37. map.put("name", "书包");
  38. map.put("price", "$100.00");
  39. list.add( map );
  40. map = new HashMap();
  41. map.put("name", "唱片");
  42. map.put("price", "$59.99");
  43. list.add( map );
  44. map = new HashMap();
  45. map.put("name", "小菜");
  46. map.put("price", "$3.99");
  47. list.add( map );
  48. return list;
  49. }
  50. public static Map getUserInfo(){
  51. Map<String,String> para = new HashMap<String,String>();
  52. para.put("name", "dirk.zhang");
  53. para.put("age", "20");
  54. para.put("sex", "male");
  55. return para;
  56. }
  57. public static VelocityContext getVelocityContext(){
  58. VelocityContext context = new VelocityContext();
  59. context.put("list", getNames());
  60. context.put("listMap", getNamesMap());
  61. Map<String,String> para = getUserInfo();
  62. if(para.size() >0)
  63. for(String key : para.keySet())
  64. context.put(key, para.get(key));
  65. return context;
  66. }
  67. public static VelocityEngine getVelocityEngine() throws Exception{
  68. VelocityEngine ve = new VelocityEngine();
  69. Properties properties = new Properties();
  70. String fileDir = Thread.currentThread().getContextClassLoader().getResource("").getPath();
  71. //      ve.setProperty(Velocity.RESOURCE_LOADER, "class");
  72. //      ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
  73. properties.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH,fileDir);
  74. properties.setProperty(Velocity.ENCODING_DEFAULT, "utf-8");
  75. properties.setProperty(Velocity.INPUT_ENCODING, "utf-8");
  76. properties.setProperty(Velocity.OUTPUT_ENCODING, "utf-8");
  77. ve.init(properties);
  78. return ve;
  79. }
  80. }

下面是模板文件:

Java代码  
  1. ##声明一个变量:this并且设置值为:Velocity
  2. #set( $this = "咫尺天涯")
  3. ##使用设置的变量值
  4. 这里是$this的博客!
  5. ##for打印集合信息数据
  6. #foreach( $name in $list )
  7. 姓名:$name!
  8. #end
  9. ##声明一个布尔值
  10. #set( $condition = true)
  11. ## if else分支判断
  12. #if ($condition)
  13. The condition is true!
  14. #else
  15. The condition is false!
  16. #end
  17. 姓名:$name,年龄:$age,性别:$sex
  18. #foreach( $p in $listMap )
  19. 项目:$p.name,价格:$p.price;
  20. #end

velocity使用简单,一看便知,老少皆宜的好东东

velocity的简介相关推荐

  1. 详解模板注入漏洞(下)

    作者 | 原作者gosecure,翻译整理shan66 来源 | http://gosecure.github.io/ 在上一篇文章中,我们为读者详细介绍了模版注入漏洞的概念,模版引擎的识别方法,以及 ...

  2. 2022-2028全球与中国业务流程管理(BPM)服务市场现状及未来发展趋势

    [报告篇幅]:111 [报告图表数]:144 [报告出版时间]:2022年2月 报告摘要 本文研究全球及中国市场业务流程管理(BPM)服务现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比 ...

  3. 神级以下必读! ~程序员学习资料(图书源码) 01

     为表示感谢,少见的郑重声明:本文转自- http://blog.csdn.net/fanxiaobin577328725/article/details/51894331?locationNum ...

  4. velocity的使用简介

    Velocity 是一个基于 Java 的模板引擎,它允许任何人仅仅简单的使用模板语言来引用由 Java 代码定义的对象,从而实现界面和 Java 代码的分离,使得界面设计人员可以和 Java 程序开 ...

  5. java Apache Commons jar包简介

    一.Commons BeanUtils 说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装. 二.Commons CLI 说明 ...

  6. Velocity Toolbox

    2019独角兽企业重金招聘Python工程师标准>>> 一.velocity简介:略 二.需要引入一些相关的包: (相关包可以到官方下载:http://velocity.apache ...

  7. Java开源——常见J2EE框架简介

    Java开源--常见J2EE框架简介 Spring Framework Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口 ...

  8. Hadoop详解(一):Hadoop简介

    1. Hadoop 起源 1.1 Hadoop的身世 首先我们介绍一下Nutch的发展情况,Nutch是一个以Lucene为基础实现的搜索引擎系统,Lucene为Nutch提供了文本检索和索引的API ...

  9. Spring框架简介

    Spring框架简介 Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本. ...

最新文章

  1. linux安装sphinx
  2. Android,使用Json发送数据中,使用的Java转义字符 KanKan原创
  3. oracle 连 db2,数据库连接客户端使用(db2,oracle,mysql)
  4. ArcGIS JS先添加动态图层,再添加切片图层后不显示
  5. 一文解析激光雷达中时序融合的研究现状和发展方向
  6. 我的世界java和基岩版哪个好玩_我的世界:Java版本好玩还是基岩版好玩?老玩家看完后沉默了...
  7. phpul 无序列表,PHP – 简单嵌套无序列表(UL)数组
  8. DotNetZip使用简介
  9. 测试-关于Unity获取子层级内容的几种接口(Transform FindChild, Component GetComponentInChildren,...)...
  10. 端口状态 LISTENING、ESTABLISHED、TIME_WAIT、FIN_WAIT_2、CLOSE_WAIT、CLOSE_WAIT
  11. PAT (Basic Level) Practice1025 反转链表
  12. 接口测试工具设计与实现
  13. SQL Server 索引 之 书签查找 第十一篇
  14. 马化腾回忆创业:曾假扮女孩子陪聊
  15. 【历史上的今天】4 月 26 日:验证码的发明者诞生;切尔诺贝利病毒爆发;诺基亚收购 Withings
  16. 摩拜与ofo, 你们这是为了共享单车还是共享经济?
  17. (一)Gluster 介绍及简单部署
  18. 国产芯片传来好消息,纯国产CPU测试数据“曝光”
  19. Re:从零开始的DS学习 十大排序算法我都整理好了
  20. RK3399驱动开发 | 08 - RK3399显示系统详解(基于RK SDK Linux 4.4.194内核)

热门文章

  1. maven下载和安装·
  2. IQ测试GPT完胜大学生;AIGC+表情包=?微软将GPT全面集成到Office;原作者对AI有声读物不太满意;GitHub今日热榜 | ShowMeAI资讯日报
  3. Vuex中mutations的用法
  4. Java高并发项目案例,Java开发指南
  5. 有关金山毒霸“熊猫烧香免疫”功能的解释
  6. 笔记本故障:win7在输入密码界面一直重启
  7. 中小企业如何从作坊生意走向公司化运作?
  8. Unity加载C语言32dll,Unity3d 载入 C++/CLI (托管方式c++) 的动态库(DLL)
  9. 卡通动物氦气箔聚酯薄膜气球的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. Visual Studio远程调试