【转】一篇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文件, 而后运行, 如无心外会在控制台看到以下的输出:
javascript

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 三层的逻辑结构发生混淆。 php

相关文章
相关标签/搜索