【转】一篇Velocity入门级的文章

         这是一篇Velocity入门级的文章,虽然很简单,但确实能够说明Velocity的工作原理,值得一读。
        虽然大多 Velocity 的应用都是基于 Servlet 的网页制作, 但是为了说明 Velocity 的使用,我决定采用更通用的 Java application 来说明它的工作原理。 
        似乎所有语言教学的开头都是采用 HelloWorld 来作为第一个程序的示例。这里也不例外。 
      任何 Velocity 的应用都包括两个方面:
          一是模板制作. 在我们这个例子中就是 hellosite.vm: 
Hello $name! Welcome to $site world!


            二是 Java 程序部分:  
import java.io.StringWriter;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;

public class HelloWorld{
  public static void main( String[] args )throws Exception{
   // first, get and initialize an engine
   VelocityEngine ve = new VelocityEngine();
   ve.init();
   // next, get the Template
   Template t = ve.getTemplate( "hellosite.vm" );
   // create a context and add data
   VelocityContext context = new VelocityContext();
   context.put("name", "Eiffel Qiu");
   context.put("site", "http://www.j2medev.com");
   // now render the template into a StringWriter
   StringWriter writer = new StringWriter();
   t.merge( context, writer );
   // show the World
   System.out.println( writer.toString() ); 
 }
}


将两个文件放在同一个目录下(假设为d:\workspace\) . 打开命令行窗口,进入d:\workspace, 编译java文件, 然后运行, 如无意外会在控制台看到如下的输出:

Hello Eiffel Qiu! Welcome to http://www.j2medev.com world
记得把  Velocity 依赖添加到类路径中.

        这就是Velocity的基本工作原理。
在将来的 servlet 应用中会有所区别,因为网页输出并不和命令行输出相同,如果用于网页输出,将并不通过 System.out 输出。这会在以后的教程中给大家解释的。 


 来总结一下 Velocity 真正的工作原理: 
Velocity 解决了如何在 Servlet 和 网页之间传递数据的问题,当然这种传输数据的机制是在 MVC 模式上进行的,也就是View 和 Modle , Controller 之间相互独立工作,一方的修改不影响其他方变动,他们之间是通过环境变量(Context)来实现的,当然双方网页制作一方和后台程序一方要相互约定好对所传递变量的命名约定,比如上个程序例子中的 site, name 变量,它们在网页上就是 $name ,$site 。 这样只要双方约定好了变量名字,那么双方就可以独立工作了。 无论页面如何变化,只要变量名不变,那么后台程序就无需改动,前台网页也可以任意由网页制作人员修改。这就是 Velocity 的工作原理。 

你会发现简单变量名通常无法满足网页制作显示数据的需要,比如我们经常会循环显示一些数据集,或者是根据一些数据的值来决定如何显示下一步的数据, Velocity 同样提供了循环,判断的简单语法以满足网页制作的需要。Velocity 提供了一个简单的模板语言以供前端网页制作人员使用,这个模板语言足够简单(大部分懂得javascript
的人就可以很快掌握,其实它比 javascript 要简单的多),当然这种简单是刻意的,因为它不需要它什么都能做, View 层其实不应该包含更多的逻辑,Velocity 的简单模板语法可以满足你所有对页面显示逻辑的需要,这通常已经足够了,这里不会发生象 jsp 那样因为一个无限循环语句而毁掉系统的情况,jsp 能做很多事情,Sun 在制定 Jsp 1.0 标准的时候,没有及时的限定程序员在 jsp 插入代码逻辑,使得早期的jsp 代码更象是 php 代码,它虽然强大,但是对显示层逻辑来说,并不必要,而且会使 MVC 三层的逻辑结构发生混淆。 

转载于:https://my.oschina.net/aiguozhe/blog/39512

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值