Velocity Toolbox

1、velocity簡介:略
html

2、須要引入一些相關的包:java

(相關包能夠到官方下載:http://velocity.apache.org/download.cgiweb

velocity-tool是velocity的一個子項目,主要做用:apache

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.app

基本應用見接下來的介紹。webapp

3、使用介紹jsp

一、velocity簡單配置
ide

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

二、繼承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");
	}
}

三、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>

四、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>

四、模板

##直接調用方法獲取數據
#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>

五、簡單的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;
	}
}

六、User類:略

七、測試結果:

相關文章
相關標籤/搜索