Velocity Toolbox

原创
2014/05/29 13:32
阅读数 738

一、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、测试结果:

展开阅读全文
打赏
0
6 收藏
分享
加载中
更多评论
打赏
0 评论
6 收藏
0
分享
返回顶部
顶部