最新的velocity1.6配置,开发,实例

为什么说最新呢,因为velocity的资料实在是旧的可以了。。。。现在中文的唯一一本出版的书《Velocity网页程序设计 》,还是2001年的时候发行的。。。唉。。。

于是乎,一手抓着金山词霸,一手开着英文文档,慢慢啃。

最新的1.X velocity enginee版本为1.6.2,09年3月release的,2.0只有一个beta,等正式了再用吧。

除了velocity引擎,还有个比较重要的velocity tools,版本为1.4。

下载地址:http://velocity.apache.org/download.cgi

下载后最好将里面的例子打开,把里面的jar文件都copy出来,因为这个依赖比较复杂

建立web工程,将jar文件copy到WEB-INF/lib下(为什么工程里无法直接引用。。想不通)

这是我最后的目录,先列出来了

velocity作为模板引擎,代替jsp比较好,官方的例子都是直接输出到控制台的,好没意思-。-!

简单的测试下velocity是否成功

1、在web根目录下建立index.vm,在里面敲上:

<html>

#set($hello="Velocity")
    <b>
        Welcome to $hello World11 !
    </b>
</html>

2、配置web.xml,让web服务器到*.vm的请求转为velocity来执行

<servlet>
   <servlet-name>velocitylayout</servlet-name>
   <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>velocitylayout</servlet-name>
   <url-pattern>*.vm</url-pattern>
</servlet-mapping>

Velocity在更新后使用VelocityViewServlet来处理请求,而以前的VelocityServlet已经被废弃了(网上很多都是使用旧的,害人啊-。-!)

配置后,运行试试

http://localhost:8080/XXX/index.vm

应该会成功的显示出首页来

VelocityViewServlet继承一下没什么好研究的。。。。

velocity还有一个很beautiful的特性,布局功能,你可以自己定义header,footer,content,然后拼起来,成为一个整体,当你想换内容的时候,只要把中间的content内容换掉就好了,整个模板不用更换。

这次我们使用velocityLayoutServlet来代替VelocityViewServlet。

因为VelocityViewServlet只是作为一个页面来显示,而加了layout的好处就是,默认的布局大框架不变,而只是填充的内容不同。就像蛋筒冰淇淋,外面的脆皮筒都是相同的,不同的只是内部的冰淇淋,有草莓味的,苹果味的,香草味的,卡布奇诺味的等等。

将上期的web.xml中的VelocityViewServlet部分改成velocityLayoutServlet,例如:

<servlet>
    <servlet-name>velocitylayout</servlet-name>
    <servlet-class>org.apache.velocity.tools.view.servlet.VelocityLayoutServlet</servlet-class>
</servlet>

为了查看方便,我再贴一次上一次的目录结构:

接下来,我们需要新建一个布局,作为外部的框架。默认的布局文件名字为default.vm,放在WEB-INF/templates/layout目录下(为什么放这里,等一下再介绍),内容为:

<html>
    <body>
        it's a default page.
        $screen_content
</body>
</html>

其中的$screen_content为veloctiy的页面占位符,相当于冰淇淋的筒做好了,这个地方是放冰淇淋的,我们只要另外做一个内容页引入进来就可以了。

我们再新建另外一个布局文件,命名为page.vm,作为测试布局,当没有任何布局的时候,才会调用默认布局。内容为:

<html>
    <body>
        <div style="border:solid 1px black;padding:20px;">
        $screen_content
        </div>
    </body>
</html>

布局建好后,我们自然需要填入一些内容,建立内容文件,index.vm,我这里放在WEB-INF根目录下,为的是。index.vm文件内容为:


#set($hello="Velocity")
<b>
    Welcome to $hello World !
</b>

$set这些我就不解释了,相当于赋值和初始化变量。

最后,是我们最重要的配置文件,velocity.properties,这个名字是velocity默认的配置文件名,默认位置在WEB-INF目录下,如果名字或者路径非默认,则需要在web.xml的servlet初始化参数中加入相应的路径,这里就不涉及了,需要的请看我的另一篇文章《velocity的默认配置路径

velocity.properties和之前的有所区别,具体的区别就是路径增多。

# Filepath for error template,
# relative to web application root directory
tools.view.servlet.error.template = error.vm

# Directory for layout templates,
# relative to web application root directory
tools.view.servlet.layout.directory = /layout/

# Filepath of the default layout template
# relative to the layout directory
# NOT relative to the root directory of the webapp!
tools.view.servlet.layout.default.template = Default.vm

input.encoding=gbk
output.encoding=gbk

webapp.resource.loader.path=/
webapp.resource.loader.path=/WEB-INF/templates/
velocimacro.library=VM_global_library.vm

在定义了webapp.resource.loader.path这个根目录后(可多个),velocity就会自动在这个目录下寻找相应的文件。看了绿色的英文注释后,应该明白,error.vm是根据webapp的目录寻找,default.vm是根据配置的layout目录寻找。

运行下看看,是不是默认布局出来了,两者整合在一起了。

如果url写成index.vm?layout=page.vm这种形式,那么,就会调用到特定的布局。

也可以在vm一开始就设定好该页使用的布局。

#set($layout = "page.vm" )
#set($hello="Velocity")
<b>
    Welcome to $hello World11 !
</b>

这样,就可以直接使用布局。当不存在该布局时,就会调用默认布局。

懒人的第二期结束-。-!敬请期待第三次。。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧米优

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值