Velocity简介和实例

-- velocity的简介,不想看可以略过,直接看实例,其实可以全部略过滴 -----------------

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提 供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当 作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。

 

package com.velocity.demo;

import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;

public class PromotedVelocityDemo
{
	public static void main(String[] args) throws Exception, ParseErrorException, Exception
	{
		VelocityEngine ve = getVelocityEngine();
		VelocityContext context = getVelocityContext();
		Template template = ve.getTemplate("com/velocity/demo/promotedTemple");
		if(template != null){
			StringWriter getWriter = new StringWriter();
			template.merge(context, getWriter);
			System.out.println(getWriter);
		}
		
	} 
	 public static ArrayList getNames() {  
	        ArrayList list = new ArrayList();  
	        list.add("刘少奇");  
	        list.add("李逵");  
	        list.add("王熙凤");  
	        list.add("李四光");  
	        return list;  
	    }  
	public static ArrayList getNamesMap() {   
        ArrayList list = new ArrayList();  
        Map map = new HashMap();      
        map.put("name", "书包");  
        map.put("price", "$100.00");  
        list.add( map );      
        map = new HashMap();  
        map.put("name", "唱片");  
        map.put("price", "$59.99");  
        list.add( map );      
        map = new HashMap();  
        map.put("name", "小菜");  
        map.put("price", "$3.99");  
        list.add( map );  
        return list;  
    }  
	public static Map getUserInfo(){
		Map<String,String> para = new HashMap<String,String>();
		para.put("name", "dirk.zhang");
		para.put("age", "20");
		para.put("sex", "male");
		return para;
	}
	public static VelocityContext getVelocityContext(){
		VelocityContext context = new VelocityContext();
		context.put("list", getNames());
		context.put("listMap", getNamesMap());
		Map<String,String> para = getUserInfo();
		if(para.size() >0)
			for(String key : para.keySet())
				context.put(key, para.get(key));
		return context;
	}
	public static VelocityEngine getVelocityEngine() throws Exception{
		VelocityEngine ve = new VelocityEngine();
		Properties properties = new Properties();
		String fileDir = Thread.currentThread().getContextClassLoader().getResource("").getPath();
//		ve.setProperty(Velocity.RESOURCE_LOADER, "class");
//		ve.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
		properties.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH,fileDir);
		properties.setProperty(Velocity.ENCODING_DEFAULT, "utf-8");
		properties.setProperty(Velocity.INPUT_ENCODING, "utf-8");
		properties.setProperty(Velocity.OUTPUT_ENCODING, "utf-8");
		ve.init(properties);
		return ve;
		
	}

}

 下面是模板文件:

##声明一个变量:this并且设置值为:Velocity  
#set( $this = "咫尺天涯")  
##使用设置的变量值  
这里是$this的博客!  
##for打印集合信息数据  
#foreach( $name in $list )  
姓名:$name!  
#end  
##声明一个布尔值  
#set( $condition = true)  
## if else分支判断  
#if ($condition)  
The condition is true!  
#else  
The condition is false!  
#end  
姓名:$name,年龄:$age,性别:$sex  
#foreach( $p in $listMap )  
项目:$p.name,价格:$p.price;  
#end  
 velocity使用简单,一看便知,老少皆宜的好东东
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Velocity进行移动,您需要按照以下步骤进行操作: 1. 首先,将Velocity库添加到您的项目。您可以从Velocity官方网站(https://velocity.apache.org/)下载并导入所需的jar文件。 2. 创建一个Velocity实例,并将其与模板文件关联起来。您可以使用Velocity的Template类来加载和处理模板文件。例如: ``` VelocityEngine velocityEngine = new VelocityEngine(); velocityEngine.init(); Template template = velocityEngine.getTemplate("path/to/template.vm"); ``` 请确保将"path/to/template.vm"替换为实际的模板文件路径。 3. 准备模板所需的数据。您可以使用Velocity的Context类来设置模板使用的变量值。例如: ``` Context context = new Context(); context.put("name", "John"); context.put("age", 25); ``` 在上面的示例,我们设置了名为"name"和"age"的两个变量,并分别赋予它们字符串"John"和整数25。 4. 将数据应用于模板并生成输出。使用Velocity的merge方法将模板和上下文对象合并,并将结果输出到指定的输出流或Writer。例如: ``` StringWriter writer = new StringWriter(); template.merge(context, writer); String output = writer.toString(); ``` 在上面的示例,我们将合并的结果输出到一个StringWriter,并通过调用toString()方法获取最终的输出字符串。 这就是使用Velocity进行移动的基本步骤。您可以根据需要调整代码以满足特定的应用需求。请确保详细阅读Velocity的文档以了解更多功能和用法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值