velocity masterplate 第一个程序的运行

昨天就在开始研究java的一个模版引擎,也就是velocity,通过这个模版,我们可以通过简单的模版语言,也就是template language这引用java中定义的对象,这些对象包括变量,属性,方法.

它主要是应用于web开发,并且可以另界面设计人员和java设计人员同步开发一个遵循MVC架构的web站点,将显示效果与业务逻辑分离出来,将java代码从页面代码中分离出来.为站点的长期维护提供了便利.

看到一个知识点,当然就想着要试一试了.

所以上网找来了helloworld的例子.

第一个例子所需要的工作如下:

1.创建一个模版文件,也就是.vm文件.代码如下:

Hello $name! Welcome to $site world!

这里含有关于两个变量的引用,一个是$name,一个是$site

2.创建工程文件,也就是一个简单的含有main的静态方法的类,里面有一些使用模版的代码,如下:

public class VelocityTest{
	public static void main(String[] args){
		//初始化模版引擎
		VelocityEngine ve = new VelocityEngine();
		ve.init();
		//获得模版
		Template t = new Template("hello.vm");
		//获得上下文
		VelocityContext vc = new VelocityContext();
		//为上下文填数据
		vc.put("name","紫蝶_妖儿");
		vc.put("site","http://cattylover");
		//输出
		StringWriter writer = new StringWriter();
		t.merge(vc,writer);
		System.out.println(writer.toString());
	}
}

3.环境的配置,下面这个环境的配置是我自己摸索的,感觉一定还有更科学的方法,只是我不知道.

先是通过网上提供的地址,去下载velocity的jar包.然后通过eclipse的引用外部的jar功能,把以下三个包引用进来

image

为什么说是要引用这三个包呢? 这些都是我通过在编译时抛出来的异常,然后再根据异常信息去逐个引用的.

这其中其实commons-collections和commons-lang其实都在velocity里包含有了,但如果不重复包含这两个的话,总会抛出异常,而我又还没找到再好的解决方案,所以就只能先这么用着了.

后来我终于成功啦,呜呜,至少昨晚调了好久都没调出来.

今天又看到一个文章,原来原来还可以改变这个输出的方式,比如在给一个模版写好上下文之后呢,可以写出到一个html页面.

哈哈,刚刚那第三个问题解决咯,原来,除了引入velocity包外,另外还有一个velocity-dep包,把这个也引用进来,那么前面的那两个commons包就可以去掉了,哈哈~~

原文地址:https://www.cnblogs.com/laizhd/p/2142069.html