分类: Java
2010-07-09 18:27:23
这次我们使用velocityLayoutServlet来代替VelocityViewServlet。 因为VelocityViewServlet只是作为一个页面来显示,而加了layout的好处就是,默认的布局大框架不变,而只是填充的内容不同。就像蛋筒冰淇淋,外面的脆皮筒都是相同的,不同的只是内部的冰淇淋,有草莓味的,苹果味的,香草味的,卡布奇诺味的等等。 将上期的web.xml中的VelocityViewServlet部分改成velocityLayoutServlet,例如:
为了查看方便,我再贴一次上一次的目录结构: 接下来,我们需要新建一个布局,作为外部的框架。默认的布局文件名字为default.vm,放在WEB-INF/templates/layout目录下(为什么放这里,等一下再介绍),内容为:
其中的$screen_content为veloctiy的页面占位符,相当于冰淇淋的筒做好了,这个地方是放冰淇淋的,我们只要另外做一个内容页引入进来就可以了。 我们再新建另外一个布局文件,命名为page.vm,作为测试布局,当没有任何布局的时候,才会调用默认布局。内容为:
布局建好后,我们自然需要填入一些内容,建立内容文件,index.vm,我这里放在WEB-INF根目录下,为的是。index.vm文件内容为:
$set这些我就不解释了,相当于赋值和初始化变量。 最后,是我们最重要的配置文件,velocity.properties,这个名字是velocity默认的配置文件名,默认位置在WEB-INF目录下,如果名字或者路径非默认,则需要在web.xml的servlet初始化参数中加入相应的路径,这里就不涉及了,需要的请看我的另一篇文章《velocity的默认配置路径》 velocity.properties和之前的有所区别,具体的区别就是路径增多。 # Filepath for error template, 在定义了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") Welcome to $hello World11 ! 这样,就可以直接使用布局。当不存在该布局时,就会调用默认布局。 懒人的第二期结束-。-!敬请期待第三次。。。。 |