您的位置:首页 > 其它

velocity的了解及学习

2015-09-17 14:57 176 查看
在公司做项目时看到上个版本使用的后台页面使用的是velocity魔板,很好奇这是什么技术,于是就找了点资料,在maven项目中使用spingMVC配置velocity模板。现在还是让我们初识一下这个技术吧。
Velocity初识:
Velocity是一种Java模版引擎技术。其实说白了Velocity也就是MVC架构的一种实现,但它更多的是关注在Model和 View之间,作为它们的桥梁。实际上就是一个前台界面与后台业务交互的部分,可以使用jsp替代(或者说两者都可以实现前台展示功能)。使用velocity就要配置velocity解析器,和springmvc中视图解析器方法大致相同,只是使用技术不同而已。初接触这个东西,首先吸引我的是这个“模板”这个名称,以前学过c#技术,做网站时感觉使用模板确实不错。当做一个系统的网站时,基本上要求总体风格一致,那么可能好多网页的头部和网页的最下面都是相同的。如果不使用模板,会重复很多代码(当然你也可以使用jsp中page指令)。所以第一感觉应该觉得很好使用。接下来就查了一些资料。看来这个技术确实不错。在我看来,它有以下几个优点:(1)简单易学,只要有html和css等的基础就可以。比较容易入手。
(2)能够实现真正地把java代码从html页面上分割开来
(3)与后台数据进行交互时,用法简单简洁(相比jstl标签而言,不用使用import引入页面所需要的库,而且没有像jstl每次使用都要使用一个前缀,使用复杂。而且两者功能大致相同)
还有,性能优化之类的,这些没有多大体会,大家可以查查资料。那么我们就试试velocity怎么融合在springMVC项目中的吧:如果大家配置过springMVC的话,那么就特别简单了。只是查些资料,把InternalResourceViewResolver这个视图解析器进行改变即可。当然还需要导入相对应的包和配置文件:velocity-tools.xml和velocity.properties。如果没有配置过springmvc那么做好学一下,接下来可以参考一下这几个网址资料:
http://blog.csdn.net/javaloverkehui/article/details/38494609http://www.blogjava.net/liuxiaosan/archive/2011/11/24/364737.html配置好后配置controller使其页面正常显示。接下来就是学习velocity的语法了。可以参考一下文章:http://www.open-open.com/doc/view/aa893717a65647f6a020c5e05b07e748/article/1354232.html特别要注意的是怎么使用模板:下面举一个小例子: Default.vm

#* @vtlvariable name="screen_content" type="java.lang.String" *#
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
$screen_content ##一定要注意$screen_content,它表示需要填充的内容 </body>
</html>

接下来看怎么使用这个模板:
在另外一个页面中直接这样使用,就可以使用这个模板。模板中也可以有一部分的设计,但是一定在需要填充内容的部分使用$screen_content标记出来。
#set($layout="layout/default.vm")
<div class="blue">
<div class="x">
<div class="z logo"></div>
<div class="z d_h"></div>
<div class="z d_v"></div>
</div>
</div>
接下里看怎么进行数据交互的。使用velocity获取controller的数据(用法与jstl有点相似) booklist.vm
#set($layout="layout/default.vm")
<center>
<table>
#foreach($t in ${books})
<tr>
<td>${t.bookName}</td>
<td>${t.studentId}</td>
</tr>
#end
</table>
</center>

对应的controller:
@RequestMapping("/getBookList.html")
public String getBookInfo(HttpServletRequest request, HttpServletResponse response) {

List<Book> books=new ArrayList<Book>();
books=bookService.findBooksByStudent((long) 1);
request.setAttribute("books", books);
return "book/booklist";
}

只要把数据使用request.setAttribute("books", books)进行键值对存储,就可以在请求的页面上直接使用el语言进行获取,使用#foreach($t in ${books})直接获取到了这个数组,并进行数据解析。其他使用还请参考具体语法进行学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: