一、velocity简介:略
二、需要引入一些相关的包:
(相关包可以到官方下载:http://velocity.apache.org/download.cgi)
velocity-tool是velocity的一个子项目,主要作用:
Contains tools and supporting infrastructure for using those tools in a servlet environment as well as general use classes to support use of Velocity as (or in) the view layer of web applications.
基本应用见接下来的介绍。
三、使用介绍
1、velocity简单配置
resource.loader = webapp
webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader
##模板路径
webapp.resource.loader.path=/WEB-INF/vm/
##设置编码
input.encoding=UTF-8
output.encoding=UTF-8
2、继承VelocityViewServlet,用于处理请求;
VelocityViewServlet实现了HttpServlet接口
package tan.code.velocitytest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.velocity.Template;
import org.apache.velocity.context.Context;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.tools.view.servlet.VelocityViewServlet;
public class VelocityServlet extends VelocityViewServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx)
throws ResourceNotFoundException, ParseErrorException, Exception {
//写入数据
ctx.put("name", "tan");
//返回模板;可以设置编码,getTemplate("test.vm","UTF-8")
return getTemplate("test.vm");
}
@Override
protected void setContentType(HttpServletRequest request, HttpServletResponse response) {
//设置相应内容类型
response.setContentType("text/html;charset=utf-8");
}
}
3、velocity-toolbox.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<toolbox>
<tool>
<key>UserTool</key>
<scope>application</scope>
<class>tan.code.velocitytest.UserTool</class>
</tool>
</toolbox>
4、web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>VelocityServlet</servlet-name>
<servlet-class>tan.code.velocitytest.VelocityServlet</servlet-class>
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/velocity-toolbox.xml</param-value>
</init-param>
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>/WEB-INF/velocity.properties</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>VelocityServlet</servlet-name>
<url-pattern>/VelocityServlet</url-pattern>
</servlet-mapping>
</web-app>
4、模板
##直接调用方法获取数据
#set($fullname = $UserTool.getFullName())
#set($userlist = $UserTool.getUsers())
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test Page</title>
</head>
<body>
<div>Hello!Call me ${name}</div>
<div>My full name is ${fullname}</div>
##遍历list
#foreach($user in $userlist)
<div>id:${user.id}/name:${user.name}
/sex:${user.sex},
##判断
#if(${user.sex}=="boy")
I am a boy!
#else
I am a girl!
#end</div>
#end
</body>
</html>
5、简单的UserTool,返回数据
package tan.code.velocitytest;
import java.util.ArrayList;
import java.util.List;
public class UserTool {
static public String getFullName() {
return "tanweijie";
}
static public List<User> getUsers() {
List<User> userlist = new ArrayList<User>();
User user1 = new User();
user1.setId(1);
user1.setName("Huang");
user1.setSex("boy");
User user2 = new User();
user2.setId(2);
user2.setName("Li");
user2.setSex("girl");
userlist.add(user1);
userlist.add(user2);
return userlist;
}
}
6、User类:略
7、测试结果: