`
123003473
  • 浏览: 1061796 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

velocity实例

 
阅读更多
1》:以html模板为例:

File file = null;

file = new File(path+"/template/member_email.html");

if(file != null){
    InputStream in = new FileInputStream(file);
    java.io.BufferedReader breader = new BufferedReader(new InputStreamReader(in, "utf-8"));
    String currentLine;
    while((currentLine = breader.readLine()) != null){
     htmlCode.append(currentLine);
    }
    in.close();
   }

return htmlCode.toString();

2》:

    Velocity.init();
    VelocityContext context = new VelocityContext();
    context.put("custName", bean.getCustName() != null?bean.getCustName():"");
    context.put("nickName", bean.getNickName() != null?bean.getNickName():"");
    context.put("address", bean.getAddress()!=null?bean.getAddress():"");//地址
    context.put("call", bean.getCall()!=null?bean.getCall():"");//称谓
    context.put("imageUrl", bean.getImageUrl()!=null?bean.getImageUrl():"");//图片路径
    context.put("goodsName",bean.getGoodsName()!=null?bean.getGoodsName():"");//商品名称
    StringWriter w = new StringWriter();
    Velocity.evaluate(context, w, "", body);
    body = w.toString();

return body;

3》:vm模板文件的内容为:

<td><font style="font-size: 14px; font-family: '微软雅黑'; font-weight: bold; color: #333;">亲爱的<font style="margin: 0 5px; color: #fb6104;">$nickName</font>:</font></td>

4》:以vm为例子测试

public static void main(String args[]) throws Exception{
  
  File templateFile = new File("template_velocity.vm");
  if(templateFile.exists()){
   templateFile.delete();
  }
  templateFile.createNewFile();
  FileWriter fw=new FileWriter("template_velocity.vm");
     fw.write("We are using $date $name to render this.");
     fw.close();

  //初始化并取得Velocity引擎
  VelocityEngine ve = new VelocityEngine();
  ve.init();
  //取得velocity的模版
  Template t = ve.getTemplate("template_velocity.vm");
  //取得velocity的上下文context
  VelocityContext context = new VelocityContext();
  //把数据填入上下文
  context.put("name", "Liang");
  context.put("date", DateUtils.getNow());
  //为后面的展示,提前输入List数值
  List temp = new ArrayList();
  temp.add("1");
  temp.add("2");
  context.put("list", temp);
  //输出流
  StringWriter writer = new StringWriter();
  //转换输出
  t.merge(context, writer);
  System.out.println(writer.toString());
 }




任何Velocity的应用都包括模板制作和程序部分两个方面。按照惯例,采用HelloWorld来作为第一个程序的示例。

1. 模板制作模板示例hellosite.vm的内容如下(虽然其不是以HTML为主,但很容易改成一个HTML的页面):
Hello $name!  Welcome to $site world!
2.Java程序部分
下面是Java代码:

1.import java.io.StringWriter;  
2.            import org.apache.velocity.app.VelocityEngine;  
3.            import org.apache.velocity.Template;  
4.            import org.apache.velocity.VelocityContext;  
5.            public class HelloWorld  
6.            {  
7.            public static void main( String[] args )  
8.            throws Exception  
9.            {  
10.            /*  first, get and initialize an engine  */  
11.            VelocityEngine ve = new VelocityEngine();  
12.            ve.init();  
13.            /*  next, get the Template  */  
14.            Template t = ve.getTemplate( "hellosite.vm" );  
15.            /*  create a context and add data */  
16.            VelocityContext context = new VelocityContext();  
17.            context.put("name", "Eiffel Qiu");  
18.            context.put("site", "http://www.eiffelqiu.com");  
19.            /* now render the template into a StringWriter */  
20.            StringWriter writer = new StringWriter();  
21.            t.merge( context, writer );  
22.            /* show the World */  
23.            System.out.println( writer.toString() );  
24.            }  
25.            }  



将这两个文件放在同一个目录下,编译运行,结果是:
Hello Eiffel Qiu!  Welcome to http://www.eiffelqiu.com world
为了保证运行顺利,请从Velocity的网站http://jakarta.apache.org/velocity/上下载Velocity的运行包,并将其中Velocity Jar包的路径放在系统的Classpath中,这样就可以顺利编译和运行以上程序了。
这个程序很简单,但是它能清楚地说明Velocity的基本工作原理。程序中的其它部分基本上很固定,最主要的部分在以下几段代码。

◆ Velocity获取模板文件,得到模板引用:
1.Template t = ve.getTemplate( "hellosite.vm" ); 


◆ 初始化环境,并将数据放入环境:
1.VelocityContext context = new VelocityContext();  
2.context.put("name", "Eiffel Qiu");  
3.context.put("site", "http://www.eiffelqiu.com");  


◆ 初始化Velocity模板引擎:
1.VelocityEngine ve = new VelocityEngine();  
2.ve.init();  


◆ 将环境变量和输出部分结合:
1.StringWriter writer = new StringWriter();  
2.t.merge( context, writer );  
3./* show the World */  
4.System.out.println( writer.toString() );  


这一部分在将来的Servlet应用中会有所区别,因为网页输出并不和命令行输出相同,如果用于网页输出,将并不通过System.out输出。
小结
Velocity解决了如何在Servlet和网页之间传递数据的问题,当然这种传输数据的机制是在MVC模式上进行的,也就是View、Modle和Controller之间相互独立工作,一方的修改不影响其它方面的变动。
他们之间的联系通过环境变量(Context)来实现,当然网页制作方和后台程序方要相互约定好对所传递变量的命名,比如上个程序例子中的site、name变量,它们在网页上就是$name、$site。
这样只要双方约定好变量名字,就可以独立工作了。无论页面如何变化,只要变量名不变,后台程序无需改动,前台网页也可以任意由网页制作人员修改。
通常简单变量名无法满足网页制作显示数据的需要,比如经常会循环显示一些数据集,或者是根据一些数据的值来决定如何显示下一步的数据等。
Velocity同样提供了循环、判断的简单语法以满足网页制作的需要。Velocity提供了一个简单的模板语言,供前端网页制作人员使用,这个模板语言简单到大部分懂得JavaScript的人都可以很快掌握,其甚至比JavaScript更简单。
当然这种简单是刻意的,因为不需要Velocity什么都能完成,而只需专注于其应该完成的。View层不应该包含更多的逻辑,Velocity的简单模板语法完全可以满足所有对页面显示逻辑的需要,并且也不会发生像JSP那样因为一个无限循环语句而毁掉系统的情况。




public static void main(String[] args) throws Exception {
        Map<String,String> map = new HashMap<String,String>();
        map.put("id", "123");
        map.put("name1", "123");
        Velocity.init();
        VelocityContext velocityContext = new VelocityContext(map);
        StringWriter result = new StringWriter();
        String sqlTemplate = "select * from where id = $id and name=:name";
//        Template template = Velocity.getTemplate(sqlTemplate, "UTF-8");
        Velocity.evaluate(velocityContext, result, "", sqlTemplate);
//        VelocityEngine ve = new VelocityEngine();
        System.out.println(result.toString());
    }



【收藏地址】http://www.myexception.cn/database/424711.html
分享到:
评论

相关推荐

    VELOCITY实例-餐饮新版V1.10.rar

    "VELOCITY实例-餐饮新版V1.10.rar"是一个包含有关餐饮行业的软件应用更新的压缩文件,版本为V1.10。这个文件主要关注的是Velocity模板语言在Java环境中的应用,它是一种用于生成动态网页内容的强大的模板引擎。 ...

    velocity实例及中文详细文档

    在"velocity实例"中,你可以找到实际应用Velocity模板语言的示例。这些实例通常会展示如何在模板中嵌入变量、控制结构(如条件语句和循环)以及方法调用,以动态生成HTML或其他格式的输出。例如,可能有一个例子展示...

    spring3.2+velocity 实例

    标题“spring3.2+velocity 实例”表明我们要探讨的是如何在Spring 3.2框架中集成并使用Velocity模板引擎来构建动态Web应用。Velocity是一个开源的Java模板引擎,它允许开发者将业务逻辑与表现层分离,使得网页设计...

    velocity 实例

    在上述的"velocity实例"中,提供了两个示例,一个是Java工程,另一个是Web工程,都是为了展示如何使用Velocity来处理模板并生成输出。 1. Java工程实例: 这个例子展示了如何在Java应用程序中使用Velocity。首先,...

    webwork+spring+ibatis+velocity实例

    【标题】"WebWork+Spring+Ibatis+Velocity实例"是一个综合性的开发示例,它展示了这四个技术在实际Web应用程序中的集成与应用。WebWork是早期的一个MVC(Model-View-Controller)框架,提供了丰富的动作调度和数据...

    Struts2 与 Velocity 实例

    Struts2 和 Velocity 是两种广泛应用于Java Web 开发中的开源框架。Struts2 主要负责MVC(模型-视图-控制器)架构的实现,提供了一种组织应用程序逻辑的方式,而Velocity 则是一个模板引擎,专注于视图层的渲染,...

    velocity 简单实例

    这个简单的实例将会帮助我们理解如何在实际项目中使用 Velocity。 首先,我们需要了解 Velocity 的基本概念。Velocity 模板语言(VTL)是 Velocity 的核心,它允许我们在模板中插入变量和控制结构,如条件语句和...

    velocity Java开发指南中文版

    - **单实例还是多实例(To Singleton Or Not To Singleton)**: 讨论了在不同的应用场景下,是应该使用单个 Velocity 实例还是多个实例的问题。 - **Singleton Model**: 介绍如何使用单例模式来管理 Velocity 的实例...

    velocity总结

    - **初始化 Velocity**:在 JVM 或 Web 应用中仅存在一个 Velocity 引擎实例,所有应用共享该实例。通过 `org.apache.velocity.app.Velocity` 类来获取这个单例。 - **示例代码**: ```java Velocity.set...

    velocity教程

    **四、Velocity实例** 一个简单的Velocity模板可能如下所示: ```html &lt;!DOCTYPE html&gt; $title &lt;h1&gt;Welcome, $username! &lt;p&gt;You have $messageCount messages. ``` 在这个例子中,`$title`、`$username`...

    Velocity模板实例

    Velocity模板实例 Velocity模板实例 Velocity模板实例 Velocity模板实例

    Java Web项目开发案例精粹--Velocity简单实例

    【Java Web项目开发案例精粹--Velocity简单实例】 在Java Web开发中,Velocity是一个非常流行的模板引擎,它允许开发者将HTML页面设计与业务逻辑相分离,使得开发者可以专注于后端逻辑,而设计师则可以自由地设计...

    Apache Velocity - Developer's Guide

    - **非单例模型**:如果需要为每个请求或用户会话单独创建 Velocity 实例,则可以使用非单例模型。 #### 四、上下文 上下文是 Velocity 中一个重要的概念,它是 Velocity 引擎用来存储数据模型中的变量的地方。...

    Velocity_java开发指南

    - **独立实例**:探讨在特定情况下使用多个独立Velocity实例的优点和缺点。 #### 五、The Context - **基础概念**:介绍Context类及其作用。 - **迭代支持**:展示如何在模板中使用`#foreach`指令来遍历列表或其他...

    velocity生成静态页面实例

    在“velocity生成静态页面实例”中,我们首先需要一个 Velocity模板文件(通常以`.vm`为扩展名),在这个文件中,我们可以使用Velocity语法来定义页面结构,并插入动态数据占位符。例如,我们可以写一个简单的模板:...

    Velocity入门小实例,纯java工程

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

    struts2与velocity集成 实例

    Struts2和Velocity是两种广泛应用于Java Web开发的技术。Struts2是一个强大的MVC(Model-View...通过实践这个实例,你可以深入学习到如何在Struts2中使用Velocity模板来构建动态网页,进一步提升你的Java Web开发技能。

    Maven 整合 Spring mvc + Mybatis + Velocity 的实例

    本实例将探讨如何使用Maven作为项目管理工具,结合Spring MVC作为控制层框架,Mybatis作为数据访问层框架,以及Velocity作为视图层模板引擎,来构建一个完整的Java Web应用。以下是关于这些技术的详细解释和整合步骤...

Global site tag (gtag.js) - Google Analytics