关于模板语言Velocity的简单例子

 

import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;

public class HelloVelocity {
 
 public static void main(String[] args) throws Exception {
  
  // 初始化并取得Velocity引擎
  VelocityEngine ve = new VelocityEngine();
  ve.init();
  
  
  // 取得velocity的模版,注意:test.vm放到你的项目根目录,不会src目录
  
  Template t = ve.getTemplate("test.vm","UTF-8");  
  // 取得velocity的上下文context
  VelocityContext context = new VelocityContext();
  
  // 把数据填入上下文
  context.put("name", "javaboy2012");
  
  context.put("date", (new Date()).toString());
  
  //将java类实例,填入上下文,在模板中使用
  Cal c=new Cal();
  context.put("caltool", c);
  
  
  News news1=new News();
  news1.setAuthor("author1");
  news1.setId(1);
  news1.setTitle("title1");
  
  News news2=new News();
  news2.setAuthor("author2");
  news2.setId(2);
  news2.setTitle("title2");
  
  News news3=new News();
  
  news3.setAuthor("author3");
  news3.setId(3);
  news3.setTitle("title3");
  
  List<News> items = new java.util.ArrayList<News>();
  
  items.add(news1);
  items.add(news2);
  items.add(news3);
  
  //把list数据放入上下文,在模板中使用
  context.put("items", items);  
  

  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());
 }
}

public class Cal {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub

 }
 
 
 public static int add(int a,int b)
 {
  return a+b;
  
 }

}

 

public class News {
 
 
 private int id;
 private String title;
 private String author;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getTitle() {
  return title;
 }
 public void setTitle(String title) {
  this.title = title;
 }
 public String getAuthor() {
  return author;
 }
 public void setAuthor(String author) {
  this.author = author;
 }
 
 

}

<html>
<title>Hello Velocity</title>
<body>
Welcome  $name  to Javayou.com!
today is  $date.

#foreach( $product in $list )
<li>$product</li>
#end

 

$caltool.add(1,2)

 

 

#foreach ($one in $items)

<li> 第 $velocityCount  个 <a href="${one.getId()}" title="${one.getTitle()}">${one.getAuthor()}</a></li>
#end

 

</body>
</html>

时间: 2025-01-21 10:49:58

关于模板语言Velocity的简单例子的相关文章

Metacza 2发布 C++元模板语言

Metacza 2此版本修正一个错误,遗漏了之前需要安装生成的一个文件.使它不能工作而需要全新安装. Metacza 是一个语言,其编译器可用 C++++ 元模板语言进行输出.使用更简洁的语法让元模板语言编程更加简单.Matacza 可以让你使用 boost::mpl 编写程序,并生成 C++ 头文件:也可以不用 boost::mpl. Metacza 是比 Closures 和 Lambda 更高级的语言. 示例: &http://www.aliyun.com/zixun/aggregatio

java模板语言有什么用,例如velocity

问题描述 如题... 解决方案 解决方案二:譬如网页静态化解决方案三:模板能够很好的分离展示层view跟业务层controller之间的关系.模板只负责显示.解决方案四:Velocity是一个基于java的模板引擎(templateengine).它允许任何人仅仅简单的使用模板语言(templatelanguage)来引用由java代码定义的对象.当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页

Tiny模板引擎(Velocity Plus)应用示例

把TinyTemplate当成是Velocity的升级版其实也是可以的,毕竟它的语法是基到Veloccity扩展而来的,兼容度在80%以上. 至于TinyTemplate的实例是怎样的,且看下面: 宏的可变参数 在Java中的可变参数使用起来非常方便,Tiny模板也对可变参有一定支持. ? 1 2 3 4 5 6 7 8 #macro hello() ParameterList: ${helloParameterList.size()}     #for(para:helloParameterL

Tiny模板语言(VelocityPlus)初步入门

1 关于用户手册 本文主要介绍如何在模板中使用Tiny模板语言,通过查阅本手册,可以对Tiny模板语言 TTL(Tiny Template Language)的用法有一个较全面的认识,并学会如何有效地使用Tiny模板语言.同时,本文提供了较多的例子帮您来学习并掌握它. 2 Tiny模板语言概述 Tiny 模板语言是一个参考Velocity语法的模板语言,它对Velocity模板语言中一些功能不太完全及使用过程中比较不方便的地方进行全面的扩展和升级,同时为了更好的适应Web界面层的开发,还提供了强

【Java模板语言】TinyTemplate 实战 &lt;一&gt;:Serlvet集成

一.什么是TinyTemplate 什么是模板语言? 模板语言是为了使用户界面与业务数据(内容)分离而产生的,并能生成特定格式的文档. 什么是TinyTemplate?(开源项目地址入口) Tiny模板引擎是一个基于Java技术构建的模板引擎,它具有体量小.性能高和扩展易的特点. 适合于所有通过文本模板生成文本类型内容的场景,如:XML.源文件.HTML等等,可以说,它的出现就是为了替换Velocity模板引擎而来,因此在指令集上在尽量与Velocity接近的同时,又扩展了一些Velocity不

一个O/RMapping的简单例子

ORMAPPING出来已经很多年了,之前一直有关注,但一直没有应用到项目中去,众所周知,ORMAPPING 的性能是很大一个问题,虽然它节省代码量,为程序员做了很多工作.而且ORMAPPING主要应用在JAVA领 域,.NET领域用到的少之又少,最近公司要做一个内部的资产管理系统,我就打算用ORMAPPING来做,对 几种ORMAPPING的框架我进行了比较,第一,nhibernate这个我相信大家比较熟悉了,nhibernate在JAVA 领域已经应用相当广泛了,nhibernate最持久层性

WML的简单例子及编辑、测试方法第1/2页_WML教程

                        完成WAP服务器的建立和WAP浏览器的安装之后,我们接下来就可以使用WML语言来编写WAP网页或应用,并通过WAP服务器及浏览器进行调试.从本章开始我们将系统地学习WML语言,本章主要讲解WML语言的基础知识,下一章全面讲解WML的语法.标签和规则. 2.1 WML的简单例子及编辑.测试方法 无限标记语言WML(Wireless Markup Language)是一种基于扩展标记语言XML(Extension Markup Language)的语言

Python操作json数据的一个简单例子_python

更多的信息,可以参考python内部的json文档: python>>> help(json) 或者官方文档: http://docs.python.org/library/json.html#module-json. 下面给出一个使用python解析json的简单例子: 复制代码 代码如下: #!/usr/bin/python import json #Function:Analyze json script #Json is a script can descript data st

Android json解析及简单例子_Android

一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. – Json.org JSON Vs XML 1.JSON和XML的数据可读性基本相同 2.JSON和XML同样拥有丰富的解析手段 3.JSON相对于XML来讲,数据的体积小 4.JSON与JavaScript的交互更加方便 5.JSON对数