velocity翻译成中文就是“速度”的意思,它的缩写“v”就是物理学中代表速度的符号。由它的名字可以想象出它的设计者对它有什么期望吧。毕竟有时候使用JSP来实现view层对于开发者来说是件很麻烦又费时的事情。velocity就是为开发者节约大量view层开发时间而准备的视图技术。它使用模板文件来显示视图界面。除了它自身的书写格式外,模板文件中其他代码就是普通的html代码。因此它也是实现松耦合,让美工和开发人员各司其职进行view层开发
在Struts2中使用velocity技术,首先要在项目中导入velocity的jar包:
velocity-1.5.jar velocity-dep-1.5.jar velocity-tools-view-1.3.jar
<html> <head> <title>Velocity使用范例</title> <meta http-equiv="content-type" content="text/html; charset=GB2312"/> </head> <body> <h3 align="left"> Velocity使用范例 </h3> <h1>装修材料信息列表</h1> <table border> <tr align="center"> <td>材料名</td> <td>材料价格(单位:元)</td> <td>材料库存量(单位:个)</td> </tr> #foreach($Material in $mList) <tr align="center"> <td>$Material.material</td> <td>$Material.bid</td> <td>$Material.mount</td> </tr> #end </table> </body> </html>
package com.example.struts.action;
import java.util.ArrayList;
import java.util.List;
import model.Material;
import com.opensymphony.xwork2.ActionSupport;
public class VelocityAction extends ActionSupport {
private List mList;
public String execute() throws Exception{
mList = new ArrayList();
for(int i=0;i<4;i++){
Material m = new Material();
m.setMaterial("材料"+(i+1));
m.setMount(10*(i+1));
m.setBid(1.0+(i+1));
mList.add(m);
}
return SUCCESS;
}
public List getMList() {
return mList;
}
public void setMList(List list) {
mList = list;
}
}
<package name="C06.1" extends="struts-default"> <action name="velocity" class="action.VelocityAction"> <result name="success" type="velocity">/velocity/show.vm</result> </action> </package>
#支持本地化的资源文件名定义 struts.i18n.encoding=gb2312
l “#”标识:该标识用来表明velocity中的控制语句。比如“#if”、“#foreach”等,都是用来控制流程转向的。
l “$”标识:该标识来表示对象或变量。比如示例中的“$Material”。如果这些对象还有自己的属性,则可以在其后面再加“.”,如示例中的“$Material.material”。
l “{}”标识:该标识用来为某对象或变量赋具体的值。比如“{frank}”
l “!”标识:假设某变量值为null或者还没被定义。则在该变量前加上“!”,这样在页面上调用该变量之处一律显示为空白即“ ”。
l “#”标识:velocity语言的注释标识。