昨天我推荐大家使用Velocity作为表示层来开发WEB应用。很多写习惯了jsp的朋友也许一时很难适应,不要紧,今天我为大家介绍一下,在jsp文件中如果加入Velocity扩展,让jsp和Velocity共存。
jsp + Velocity似乎并不是个好点子,在实际应用开发中也比较少用。不过,我们也可以了解了解这项技术,更进一步学习Velocity。首先我们先来看看,Velocity默认解析的文件为*.vm。在Web.xml中配置Velocity的Servlet,就可以解析执行该类型的文件了。在vm文件中是不可以出现jsp语句的。因为Velocity引擎并不认识jsp代码,只会把它们当作普通的字符串显示在页面上。而jsp页面中加入Velocity 语句也是如此。那么如何才能使jsp和Velocity共存呢?其实操作很简单,我们只需要两样东西来帮忙–即veltag.tld和veltag- 0.01-dev.jar。可以到apache上下载。
veltag.tld是标签库文件,在jsp页面中,利用该库中定义好的几个标签来告诉Velocity引擎处理哪些代码。将该文件拷贝至WEB-INF下,并在web.xml中加入如下代码:
- <%@ taglib uri="/WEB-INF/veltag.tld" prefix="vel" %>
- #set($mybean = $scopetool.getPageScope("mybean"))
- #if(true)
- this is true!
- #end
- $mybean.string
- #foreach($item in $mybean.array)
- $item
- #end
veltag-0.0.1-dev.jar是用来解析标签的类库文件,同普通的jar一样,将其拷贝至WEB-INFlib目录下。
运行一下看看,是不是很好玩呢?好玩归好玩,不过,要使用jsp + velocity来做为显示层可能并不合适。因为jsp首先要被编译的成servlet然后才能执行的。而此时的velocity语句被servlet当做字符串输出,然后由Velocity的Servlet接管并解析该文件。经过一次编译(当然只编译一次)和解析,在运行效率上似乎并不比单纯的编译或者解析要好。另外,将jsp和velocity两种语法放在一个文件中,一眼望去,不如一种代码看上去更整洁。不过,做为一项技术,我们可学习学习。