Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象

  velocity的语法非常简单。这里不多介绍。

  我们平时的web项目,通常的开发流程是前端写好静态页面。后端将静态页面改成jsp,在相应的需要替换数据的地方,使用 jstl、EL表达式等接收action模块传递过来的数据。一般使用action来处处理参数,调用service层来处理业务逻辑,service层调用dao层从数据库取数据。我们可以看到,大体上就是后端发送数据给前端。

  这里一般会有一个很大的问题。如果业务变更,例如一个页面本来要显示一个表格,现在需要显示3个表格,另外的2个表格是从之前的其他页面合并的。mvc模式的好处就是,此时,除了页面的改动之外,做业务逻辑处理的service层和dao层,都不需要变化,只需要改动相应的action层,调用所需的service模块,将所需要的数据输出。

  而如果使用velocity,除了页面的改动之外,其他都不需要改动。

  velocity做web项目与我们平时的项目最大的不同是由前端从后端拿数据。需要什么就拿什么。我们完全可以通过velocity把前端和后端完全分离开来。

  下面使用一个简单的例子模拟一下velocity的这种思想。

  (由于velocity自身并不提供任何web相关的功能,它只是通过模板生成格式文档。但是,开发web应用的时候,需要有一个框架来处理HTTP请求。velocity有一个非常好的子项目velocity-tools,使用它的VelocityViewServlet可以非常方便的实现这个功能。如下)

  1、依赖包只有2个:最新的 velocity-1.6.2.jar 和 velocity-tools-2.0.jar,网址:http://velocity.apache.org/download.cgi

  2、首先看一下我们的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app> <servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-class>
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/conf/velocity-toolbox.xml</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.vm</welcome-file>
</welcome-file-list>
</web-app>

  3、然后看一下简单的页面:

<html>
<body> this is the word : $mytool.getHello() </body>
</html>

  4、接下来是最重要的velocity-toolbox.xml 类,这里的工具类就是在页面可以直接调用的类了。如下:

<?xml version="1.0" encoding="UTF-8"?>

<toolbox>

  <tool>
<key>mytool</key>
<scope>request</scope>
<class>com.chandler.tool.MyTool</class>
</tool> </toolbox>

  指定了请求到来时的工具类实例的生命周期为request

  5、OK,就这样,可以访问了,如下:

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUIAAABzCAIAAABinpx3AAAUoklEQVR4nO2dW1AbV5rH9bT7kpqqrdp9yezWPuVx52GqssywNclMXJn4OjHGg+8YY1s2sU1sE2zHdozjkIRMLsvOzia1SRRMBOEiY4QEAoEQ4i5uksVFXIQAA8YgqaWWWhduCfvQoatpdbdaqBvU7Pcrlat1dPo7/3PO9+9zdIyxJAAAgMiRbLcAceP1+Wbn5q1jE+bBEaNpoLNvoLNvwGgaMA+OWMfss3PzPgzbbo3AzgdsvElciHto1N7R1z9sm1hwurw+LBAIBIPBYDAYCAS8Pmze4Rq2TXT09VvHJhC3Z7v1AjsZsHHU+HzY6PiU0TQwOzcfDAZDrASDwdm5eaNpYHR8CoOVGRAGiR+IBsTt7nkyZJt4imF+dgOTwTBszD5lGhj2oF6fz7fdnQB2GmDjKHC6kC7TwILDyd3AZBYczi7z4NffyAoKCh4CAH+AjbmCuN3GvgEX4g7GgBNxP7HalpZX1gCAP3aUjQm38B7Z6/N1Pxl8Nr8Qi4dxXG50cHTixx9/2u6pB3YOO83GnX39Qth4xDY5Zp+K3cPBYHBpaWlyZm7muWO7px7YOYCNI4O43Z29/T4fp3PmIevw8Mgoe53Q4mL/sB221gBfSLAo8Xq9d3Jy7+Tker3eaO+NCsvAYMrJs1HdEggEOnotgUCAXyXWMfvUzDMuHjZ29RSXPioqUZjMFjYbh0IOxPN0dp5pVoLB4NDQkF6vV6vVarVar9cPDQ0Fg8GtzAxARERnY4fTKb187deJu36duOv8pasOp5NfwxBUVde++kbSrv0pUd0lhI09KNre8wT1eiN7uLun9JFSWa1VVteVlD/2+/3sC7JpcHT1xx/Dp2R2dra6urqjo8NkMlmtVpPJZLfbq6qq1Gr1zMzM1qcIEP9EYePp6ZlDR0//5vd7fih/XKKo/M3v9xw6enp6eoZHz2AYhqLoX/7zb6+8kfTm8fNvHjv7+V+/qtfpnU4Xl3uFsPH07NzAsC2ih7u6e8oeKVW1DZr6pipN/cCglb1+KBSyP511oz7KfMzMzNTW1jocDgzDzGazWq1WqVTt7e2VlZVqtVqpVIKTgXC42njIOvz6/kO79iXrDa25n3yR+8kXjYaWXfuSX99/aMg6zJdnZp/NSa9k7Tpw5Ej6lbTLt5JPZ+w+dOo/Xn/zld0H0y++/d33P7D7WQgbW8fsU9MRdtTGrp6yiipVrU7TYFDVNgxaRyLaPhAIzDuQp8827KsDgUBVVRWCIKurqysrKz6fr7W1tWKd2tpai8WiVCoDgQDNREokNpstplRYjxB7KDL310EQBC+RyWR4SVR1ABY42bitw5j42t7kE2c7jD3SzOxd+1N27U+RZmZ3GLuTT5z97Wt72jqMvHjm+JmM3cmnTl585+zV985fu5f+9t3USzePS68fPn1pX8qZV/cePnjk9PDIKNPttDYOrP+oMwWObu+1WB1OF5uHu3vLK6rUdbo6XbOmvska6XyLwIN6h8enyJNhsViampqWl5eXl5cRBKmoqFBspL+/v6KiwmKx0ExkHNg4/Ea1Wm00GtfW1mw2m0wmW1tbMxqNarWafMGlDsBO5JNqparm5d+9fjnr3aaW9uQT5/annDmSnnkkPXN/ypnkk+ebmtsuZ91++XevK1U1sZ8JH0t/69j569Ks+xfeeZ/8kl7POfv23ZMZ2ftS0vcln5ybe057O+1JdSgU+sUv/uHv/+lfX/jlSy/88qUXXnzp7/7xn1988V9CoRAXSR29/V4fxvS3R8bu3vLHquq6xrrGFq2+tbbBUKmuLVVUFpUoikrKi0rK5T+UV2u0tPdimP+JdUPSazSavr6+mZkZi8VSVVVVFoZWq52cnNRoNDQTGZc2lslk+AKLIAhuUZlMhtdBEARfbLnUAdiJsBp/9fV3v/r3Vz/8NL+sompvcmrSiQunMrLTM++kZ95JzbiRdPLi3uTU0kfKjz79r397+ZWvvv6Oy/rGwti4/cqt909feTfjZm7GzVxp1v3Tl989mXEj9dLNc9dzLt744Oy1eweOnvv8r1/S3k67GuNO/lXia4l7kl85cOy3fzz08qtv4B7mIqmt24wxOLx/YKj8cVVNvV6rb61vaqtvatPqWzU6Q7W2sbpOh79UtbqyCiXt7YFg0DQ4Sp6M0tLSmpoapVJZQodKpbLb7S6Xq7S0lGYi1y1ks9kk65ANn5iYSC6USqX4W6lUSomA18E/zc/Pxz+lDUuOSXwqlUqJddVms+E+vH//Ph6cvHPGr7nU4SXXdzARbOz3+wOBgN/v/8O+lCPpmWcy75y/nkO8zmTeOZKe+Yd9KUQ1jnZlwe12f5T/VVrm7YwbH6S+lV2jbbQMWlvajXdzP0/LvJ1xM/f05XePp1+ivZfWxti6k/+YdPTExat7ko5x9zC2bmPaXbHJbFHWaOv1bQ2GdqZXfVPbY5WG9na/3x9u42ISZWVlxcXFSqWyqqqquLh4cHDQ7/c/f/68pKSEZiI3mnBt3Xh4YWJiImFIlhuJi8TExLW1NdycRDVKWI1GQzwCKKEIG6+FfculfCXGLcqlDsAC1yOu3cmnpNdzLmY/OHft3smL2ScvZp+7du9i9gPp9Zzdyac4BuGI3+8vrVAdv3D9uPQa7jd8+ZLJy85k3sm4kZt08gLtjUw2xtadfPDY6ag8jGFYe4/F40GZfGjs7qvTNesMHbrmDl1zR4Ohva6xRdNg0NQ34a9qrb6hsZn2drcHpWyqVSqVXC6Xy+VtbW0DAwOTk5N1dXVGo/HRo0dyuXx4eHh2dtZsNqtUKpqJlEhsNhvuMaJQKpVqNBpKIQ55/Qy3MbE3jhiW/HSg3VQTxiaWXMpKy6UO94T+/wlXG+8/kn7p1oeXbn144kIWnoUnLmThJfuPpHN3BUf8fn9HV2/65RuUwsxbDzJu5p7NvEF7F4uNsXUnR7tl6Ou3PpubZzqm8vv9Xb2mOn2LrqWzscVY39Run5iibp4ZmJt3UI64ent7CwsLGxoa3G43iqIois7NzWm12sLCwsLCQrlcjl/39PTQTGQ0NiaXJCYmbs7G+HV+fj6xUIfbmLyu4t+Byd+ECdNGrAOww9XGB46fv3L3kyt3P0lKzcBLklIz8JIDx89HZQzu+Hw+SsmdDz5Ny7wtk5fS1me3MYZhm9j2W8fs1jE7+zFYd59Zq29tbDXWG9qrarSjozb2+jgjtknKXzj5/X65XF5QUNDf3+9ex2w2l5WVFRQUFBUVlZeXy+Vyv99PM5EMm2r8U8qmWqPR4Ntm8sabxcZMYXHy8/Px4OGbauLrLmHI8FNoLnUAdrja+OAJ6dWcz67mfHbwhJSpRGimnk4nnZJezLrL9NNjEW28CaZn51q7zUwrKmlNNtc3tTW2Gmt1zQpldcQfqw4EAp2mgfAf/7Db7TKZrLS01OVyIQiCIIjD4SguLtZoNHV1dYWFhXa7nX4i6Y64yGsj5YAKP51KTEzkshrThiVvy/HK+LEZ+YgLdyYOERP/Jkx8eeZSB2BH4uNGUupbWQ/ysx7kJ6W+xVQiKLZxe0rqhfNv37LZJ5jqEDbmsV0U9erbe9weD/vS6vP5CCdrGgxlFVXs9V2Iu6NvgPafK46PjxcUFFRWVhqNxvb29oqKisrKSqVSWVBQMD4+vvUpAsQ/XG28+3DquWv3zl27t/twKlOJQJjMlm8fFt3O+bD8scrj8bDUFMLGPp9vcGS8xzzIZenu6jVrm9pqG1v6zBb2mj1PhqZmnzPNCoZhXV1dCoVCJpPJZDKFQtHV1YVh2FZmBiAiuNqYsvLQlggHkf3s1QSysdPlqm1qX3Bw+ncgA0PDA0MRfjp1fsHR1Nm3uLS03bMP7BC42lgUCGRjn883bJto7uzjUhPDsIjPtbbuJ9Nz8GsDAN7YaTbG4T2y1+tt6zb3Woa4LMjs9DwZ6u0f/ukn+CU+AG/sKBsLitvjqW82jo5PxuLhUdukodO0vAK/9wPgE4kX4MyCw6luaO3s60dRNNp7URTt7OtXN7TCL7gFeAdsHB2I293Y1t3Y1r3gcHJfyecXHLrW7qaOHsTt9ng8290JYKcBNo4aFEV7LUMVGn1nr8XpcrEb2OlydfQ+qdDoe58MbWINBwAugI03icPpbDGaFNU6jb69r986OT274HCiqBdFvQsO5+T0bJ9lSKNvV1TrWox98w7ndusFdjJg45hA3J7BYZu+vUdd36Ko1pWpGspUDYpqnaq+Rd/eMzQyjrjd260R2PmAjQFA9EhQAABEDtgYAEQP2BgARA/YGABED9gYAEQP2BgARA/YGABED9gYAETPBhvPWO5Pdpxgec1Y7m+XUHbiU3kcqopDSUyISGpUCNGvDTa2tR5bDRlWQ82roebVkGE1qF8NNK4E6lf82hV//TJWZ2s9xl93+CQ+lcehqjiUxISIpEaFEP3aYOMRw9HVkGElULvi16z4a5Yx9bKvatlbuYQ+WvSULXkejRiO8tcdPolP5XGoKg4lMSEiqVEhRL822HhQl7Iaasajr/wc/fESqlj0lIXcxYvu0kFdCn/d4ZP4VB6HquJQEhMikhoVQvRrg43NdX9eDTWv+KtXMPWyT7mER3eXLiLFIWdhyFVkrvszf93hky1WLpFITCbTtqji2PRWShKIbZQa4yCzR4ixX7SRN9i4tyZ5NWhYxlQ/R/eUL7pLFpGikPNhcOHboOOhqfYw4noWS/cEIkbl0U4bx/pCjGeMGSaiKd5GqYLaWIhc3WBjo+rQatCw7FMuoRV49JBLHnTIAs+/DMx9iQxfN9Ue7q45/nS0OpYeCkGMygWysRDjGWOGiWiKt1GqoDYWIlc32Ljt8cGVQOMS+mgRKQo6vvXP/Q2b+cw79ZF38oFv+rMF82lT7eGQR9WmpF/0ExIS8P/RR6FQoChqMpmI/+MHL6GIIK4lEklaWppEIokYh2nUYlFOBE9LS2NqjiIJv8BL8vLyhFDF1AoxaPiIEbITEhKIQVYoFAkJCUJIIgYnLy+PSQlFuUKhwCuTeyH0nKalpYWnnMlkCp9icjUiCSmZSTs17GnMYuPYs4LojoR2EA3lf1ryaf1z/43N5mMzn/me5nmnPkQn3veMv+ed+hhvIDD/v4byP4VHVygUlA5TfEh0lbb/xAQnJCRQjEFUwxOCtm+xKGdSRTRHKwn3CZ6stDF5UYW3wjSAZMHk8ScnMe+S8MhkG4cPI2V88NEjj5XQc0qMBv5Ew5vIy8vDL5gyk/KsJD8Zw8eBPY1ZbMxXrpLHcEMK6koOLLqV2OwXvum/eKc+9k5+gNpzPLY77rFb3okHeAO+6Y91JQfCo+MjQnncEp8SicXUf/IDJjwsZcEMJxbl4QLIzYVLYuqFcKpoB5BY7sjDiFdmWopjlIRndrg8WiW044Nfb8GcElLxccOvExISiNaJmkyZGf7sJsOexqjwWUEZww0Jqi3aF3KV+J5+QjwePLbb7tEbyEgWOn6PaEBbtI+pe/hDWqFQ8Gtjpub4Uh6tAI4TxpcqlLRnJs8i8RFeLY+EEANFa2NaJVxszKSQr9HDxZANTN7aENVYbMz0fGHq4FZmBaUXG0ZT8/3e4MLDnx8P43fdY7fco9nI8DWXNdMzdptoQPP9XqbuocxbF/xTIh3xR3h4/2l3sCx5yYtyygRQmmPZ56OsExa7Krxd8gBK1rfQ4fttPFMJLwkkibKpplXCbmPaQeZdal5eHnk7nZaWRt7xhmdmuE7yLRQiprGgWUGzhyfXUBfs8T//Bh2/57Hddo/eREayEOtV19AV5+Bb7tEbeAPIRK5GfjA8OnlnhZeQ132iS0Q1/DCA9vsecVf4ERfTAzIW5ej6IU34+Qf5zIYsieOExaiKGCUJ3RkhfupG8W1aWhrLGhK7JPKRG4uSiDbegjmlPODIMmgzk/Ya7xTLODClsaBZQfMFkFxDKduNPfsf7+TH3okPUPt9z/h7Htsd9+gtZCQbGXkHb6BanjwxXE/bwDYSn8pjVMWSCkywHG7xIomA48Y4FuJzTmNHiH5tPKlWXa385g2Wl0F5ybkww3e/eCA+lceoKlobU767CiGJIC0tLWJbMRI/cyrZSIzRhOjXBk0TExNms7mXGavVOjU1NT8/H2NPeCc+lceoKiob4zvbiPVjlET8/bnQS3HsUuMWIfoFvzYAAEQP2BgARA/YGABED9gYAEQP2BgARI/kIQAAIkeyBgCAyAEbA4DoARsDgOgBGwOA6AEbA4DoARsDgOgBGwOA6AEbA4DoARsDgOgBGwOA6AEbA4DoARsDgOiJ2sb4L3DZ3Kd8tRKfkXmBd3nE79yhfcvllojlPOoUNKyg+reXzXRJ1DZeY9UfD/AujxKQY3ymaqKbl811X1xE7hLtU1kYMYIgOv1gY0HDxvnsbw6wcdzB3WabMyTYWIhWthdO35EoGYNf05Yz5RZTKPZ2+YrDUT/lFi7BmaKFxyG/jbFpigAuNZnesjTKFDzivHCRtMaQP7TltPHZB5NFEkf9Eecrrtjkahw++uz12Stwb5evOLT6o4offheXOJREYarD0u4mkIQRUSeLDF7mhWn8o5oXljzkKz9Zhiuu4GFTHe0wcVW2VXHCH8Bcnr6btnFEhULYmPYte3+FszHHyOFvOT6GNpGfTOMQz9YlsxU2XtvspkugOBynn0vY8D9Z4jM1sY025n4XS/kW2Jj2mkcbRys13tgiG0dVQeg4YGMuDcWPjfkqZ2odbBz5LZcKvLQbe5xY0pHFq1w2aWQN3Pu1uRHYdLozlW9iXnhZXbmMc/goRaV/59h4beNYSNYJfyvZCOX28HL25mKPE61+ShNcwtJe08aJKJ4yjFF1KmK1qPq7ifHfxLxwFEbbdHhzTGrDLzjqZ6kch8S7PgAAIgI2BgDRAzYGANEDNgYA0QM2BgDRAzYGANEDNgYA0QM2BgDRAzYGANEDNgYA0QM2BgDRAzYGANEDNgYA0QM2BgDRAzYGANEDNgYA0QM2BgDRAzYGANEDNgYA0QM2BgDRAzYGANEDNgYA0QM2BgDRAzYGANEDNgYA0QM2BgDRAzYGANEDNgYA0fN/5p+llbcGJh8AAAAASUVORK5CYII=" alt="" />

  可以看到,velocity的这种特性,使得它开发小型的网站变得非常便捷!很大的提高了开发效率!

  如果文中有什么不对的地方,欢迎指正!谢谢!

  转载请注明出处:http://www.cnblogs.com/zrtqsk/p/4010840.html 谢谢!

只需2分钟,简单构建velocity web项目的更多相关文章

  1. 只需2分钟!PC端的报表即可转换成手机报表

    转: 只需2分钟!PC端的报表即可转换成手机报表 手机制作报表,这个大家不知有没有尝试过,虽然我们平时都用电脑做,但是电脑要是不在身边了,手机就可以用来应应急.但其实小编并没有在手机上制作报表的实践经 ...

  2. Eclipse的maven构建一个web项目,以构建SpringMVC项目为例

    http://www.cnblogs.com/javaTest/archive/2012/04/28/2589574.html springmvc demo实例教程源代码下载:http://zuida ...

  3. 使用maven构建一个web项目

                          使用maven构建一个web项目     首先建立一个maven项目(关于环境配置上节有详细过程): 1)-->右键new,-->project ...

  4. Myeclipse 10 Maven 构建 Java Web 项目

    主要介绍如何使用 Myeclipse 10 构建 Maven Web 项目,关于 Maven 的介绍就略过了. 工具/原料 myeclipse apache-maven-3.1.0 方法/步骤 1 下 ...

  5. Spring Boot构建的Web项目如何在服务端校验表单输入

    本文首发于个人网站:Spring Boot构建的Web项目如何在服务端校验表单输入 这个例子用于演示在Spring Boot应用中如何验证Web 应用的输入,我们将会建立一个简单的Spring MVC ...

  6. 在cmd命令行使用Maven Archetype插件 generate命令创建简单的java web项目

    前提: 1.下载apache-maven:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache ...

  7. [原]Jenkins(七)---jenkins项目编译测试发布由maven构建的web项目

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...

  8. 开发Web版一对一远程直播教室只需30分钟 - 使用face2face网络教室

    转载自:https://blog.csdn.net/wo_shi_ma_nong/article/details/88110111 在“为网站开发远程直播教室的折腾过程及最终实现”中,介绍了如何使用f ...

  9. Spring Boot 学习系列(01)—从0到1,只需两分钟

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 快速构建 如果我们想基于spring mvc 提供一个简单的API查询服务,传统的方式,首先需要我们引入sp ...

随机推荐

  1. C#中HashTable的用法

    一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中 ...

  2. 原生JS:全局属性、全局方法详解

    全局属性.全局方法 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5853342.html 首先普及几个我总结的非常实用又很基础的知识:(呵呵,仅 ...

  3. One-Time Project Recognition

    Please indicate the source if you need to repost. After implementing NetSutie for serveral companies ...

  4. ios中@class和 #import区别

    很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在m文件中,而h文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把#import放到h文件中呢?这是因 ...

  5. 【代码笔记】iOS-替换电话号码中间4位为-号

    一,效果图. 二,代码. RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional se ...

  6. iOS 动画绘制线条颜色渐变的折线图

    效果图 .................... 概述 现状 折线图的应用比较广泛,为了增强用户体验,很多应用中都嵌入了折线图.折线图可以更加直观的表示数据的变化.网络上有很多绘制折线图的demo,有 ...

  7. JavaScript语言精粹(读书笔记)

    第一章 精华 1,JavaScript的函数(主要)基于词法作用域(lexical scoping)的顶级对象.强类型语言允许编译器在编译时检测错误,但弱类型很自由,无需建立复杂的类层次,不用做强制造 ...

  8. Linux strace命令

    简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...

  9. MongoDB学习笔记~MongoDB实体中的值对象

    回到目录 注意,这里说的值对象是指在MongoDB实体类中的,并不是DDD中的值对象,不过,两者也是联系,就是它是对类的补充,自己本身没有存在的价值,而在值对象中,也是不需要有主键Id的,这与DDD也 ...

  10. GacUI学习(一)

    GacUI学习(一)之高仿系统记事本(一) 转载请注明来源:http://www.cnblogs.com/lyfh/p/6107215.html GacUI是轮子哥(vczh)精心打造的跨平台C++转 ...