`
tntxia
  • 浏览: 1501442 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Velocity入门

阅读更多

使用Velocity 模板引擎开发网站

Velocity 是如何工作的呢? 虽然大多 Velocity 的应用都是基于 Servlet 的网页制作。但是为了说明 Velocity 的使用,我决定采用更通用的 Java application 来说明它的工作原理。 
  似乎所有语言教学的开头都是采用 HelloWorld 来作为第一个程序的示例。这里也不例外。 

  任何 Velocity 的应用都包括两个方面:
  第一是: 模板制作,在我们这个例子中就是 hellosite.vm:
  它的内容如下(虽然不是以 HTML 为主,但是这很容易改成一个 html 的页面)

Hello $name! Welcome to $site world!
  第二是 Java 程序部分:
  下面是 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& nbsp;add data */
        VelocityContext context = new VelocityContext();
        context.put("name", "Eiffel Qiu");
        context.put("site", "
http://www.eiffelqiu.com ");
        /* now render the template into a StringWriter */
        StringWriter writer = new StringWriter();
        t.merge( context, writer );
        /* show the World */
        System.out.println( writer.toString() ); 
    }
}


将两个文件放在同一个目录下,编译运行,结果是: 
Hello Eiffel Qiu! Welcome to 
http://www.eiffelqiu.com  world 

  为了保证运行顺利,请从 Velocity 的网站 
http://jakarta.apache.org/velocity/  上下载 Velocity 的运行包,将其中的 Velocity Jar 包的路径放在系统的 Classpath 中,这样就可以编译和运行以上的程序了。

这个程序很简单,但是它能让你清楚的了解 Velocity 的基本工作原理。程序中其他部分基本上很固定,最主要的部分在以下代码 

  这里 Velocity 获取模板文件,得到模板引用

程序代码 程序代码
/* 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.eiffelqiu.com ");


  其他代码比较固定,但是也非常重要,但是对于每个应用来说写法都很相同:
这是初始化 Velocity 模板引擎

程序代码 程序代码
/* first, get and initialize an engine */
VelocityEngine ve = new VelocityEngine();
ve.init();


  这是用来将环境变量和输出部分结合。

程序代码 程序代码
StringWriter writer = new StringWriter();
t.merge( context, writer );
/* show the World */
System.out.println( writer.toString() ); 


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

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

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

分享到:
评论

相关推荐

    velocity入门使用教程

    #### Velocity入门 入门部分通过编写一个简单的“Hello, World”程序展示了Velocity的基本使用流程。首先,创建一个模板文件(.vm),在这个文件中使用VTL语法定义输出格式。然后,在Java代码中初始化Velocity引擎...

    Velocity入门教程(Spring集成Velocity)

    Velocity入门教程,语法,Velocity布局,Spring框架集成Velocity

    Velocity 入门

    **Velocity 入门** Velocity 是一个基于 Java 的模板引擎,它是 Apache 软件基金会的顶级项目之一。它被广泛用于 Web 开发中,尤其是在 MVC(Model-View-Controller)架构中,作为视图层的技术,帮助开发者将静态...

    Velocity入门例子

    在“Velocity入门例子”中,我们将会探讨以下几个关键知识点: 1. **Velocity模板语言**:Velocity 使用一种简单的文本标记语言,称为Velocity Template Language (VTL)。VTL 允许在模板中插入Java对象的属性值,...

    velocity入门使用

    **Velocity入门指南** Velocity是一款基于Java的模板引擎,它允许开发者将HTML页面设计与业务逻辑分离,使得非程序员(如网页设计师)也能参与到网站的构建中。Velocity在Web开发中常用于生成动态内容,比如电子...

    Velocity入门Demo

    Velocity入门Demo,含源代码, 直接放到tomcat可以运行

    Velocity入门教程实例

    Velocity是一个基于Java的模板引擎,它主要的作用是在Web开发中分离Java代码与网页展示层,使得开发团队可以基于MVC架构协作开发。页面设计人员可以专注于页面的外观设计,而Java程序员则负责后端业务逻辑的编码。...

    velocity入门基础

    ### Velocity 入门基础知识 #### 一、Velocity 概述 **Velocity** 是一款基于 Java 的模板引擎,它被设计用来让开发者能够轻松地利用模板语言来引用 Java 代码所定义的对象。这种机制使得 Velocity 成为了一个强大...

    velocity入门例子

    【Velocity入门例子】是关于Apache Velocity的初学者教程资料,主要涵盖了如何使用Velocity这一模板引擎进行Web开发的基础知识。Velocity是一个开源的Java模板引擎,它允许开发者将HTML、XML或者其他格式的文档与...

    velocity入门简介

    ### Velocity入门知识点详解 #### 一、Velocity简介 Velocity 是一款基于 Java 的模板引擎,用于将数据模型与表现层分离,使得开发人员可以更高效地构建动态内容的 Web 应用程序。它允许用户通过简单的模板语法来...

    velocity入门篇

    **Velocity入门篇** Velocity是一个基于Java的模板引擎,它允许开发者将HTML页面设计与应用程序逻辑分离,使得开发者和网页设计师可以协同工作,提高开发效率。Velocity由Apache软件基金会开发并维护,是Apache ...

    Velocity入门小实例,纯java工程

    本实例旨在帮助初学者快速入门Velocity,理解其基本用法和核心概念。 1. **Velocity简介** Velocity是一个基于Java的模板引擎,它允许开发者在模板中使用特定的语法(Velocity Template Language, VTL)来插入动态...

    velocity 入门文档及应用源码,很适合做自动代码生成

    **Velocity简介** Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态Web内容。Velocity通过将内容展示与业务逻辑分离,帮助开发者专注于内容的编写,而无需关心HTML或者其他...

    velocity开发必备(中文指南+精通Velociy)

    这本书为初学者提供了详尽的Velocity入门教程,涵盖了以下关键知识点: 1. **基础语法**:介绍Velocity模板语言(VTL)的基本元素,如变量引用 `$variable`,常量 `#set`,条件判断 `#if`,循环 `#foreach`,以及...

    Velocity模板入门DEMO

    在“Velocity模板入门DEMO”中,我们通常会看到以下几个关键概念和知识点: 1. **模板文件**:Velocity模板文件通常以`.vm`为扩展名,其中包含静态文本和VTL指令。模板文件的主要任务是定义页面的布局和结构,通过...

    velocity实例

    velocity入门实例,java代码读取配置文件 可直接运行

    velocity快速入门

    ### Velocity快速入门详解 #### 一、Velocity简介与应用场景 **Velocity** 是一款基于 Java 的模板引擎,它允许用户通过简单的模板语言来访问由 Java 代码定义的对象。这种设计模式使得 Velocity 成为了一个非常...

Global site tag (gtag.js) - Google Analytics