昨天就在开始研究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功能,把以下三个包引用进来
为什么说是要引用这三个包呢? 这些都是我通过在编译时抛出来的异常,然后再根据异常信息去逐个引用的.
这其中其实commons-collections和commons-lang其实都在velocity里包含有了,但如果不重复包含这两个的话,总会抛出异常,而我又还没找到再好的解决方案,所以就只能先这么用着了.
后来我终于成功啦,呜呜,至少昨晚调了好久都没调出来.
今天又看到一个文章,原来原来还可以改变这个输出的方式,比如在给一个模版写好上下文之后呢,可以写出到一个html页面.
哈哈,刚刚那第三个问题解决咯,原来,除了引入velocity包外,另外还有一个velocity-dep包,把这个也引用进来,那么前面的那两个commons包就可以去掉了,哈哈~~