Velocity Toolbox

一、velocity简介:略

二、需要引入一些相关的包:

130142_TTe4_593105.png

(相关包可以到官方下载: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、测试结果:

131104_NCVj_593105.png

转载于:https://my.oschina.net/tanweijie/blog/270613

要在 Spring Boot 中整合 Velocity 并使用自定义标签,可以按照以下步骤进行: 1. 导入相关依赖 在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-velocity</artifactId> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-tools</artifactId> <version>2.0</version> </dependency> ``` 2. 配置 Velocity 在 `application.properties` 文件中添加以下配置: ```properties spring.velocity.resource-loader-path=classpath:/templates/ spring.velocity.toolbox-config-location=velocity.toolbox.xml ``` 其中,`resource-loader-path` 配置 Velocity 模板所在的目录,`toolbox-config-location` 配置 Velocity 工具箱的配置文件路径。 3. 定义自定义标签 在 `velocity.toolbox.xml` 文件中定义自定义标签,例如: ```xml <tools> <toolbox scope="application"> <tool key="myTag" class="com.example.MyTag"/> </toolbox> </tools> ``` 其中,`key` 是标签名,`class` 是标签类的完整路径。 4. 实现自定义标签类 在项目中创建 `MyTag` 类,并实现 `org.apache.velocity.tools.generic.SafeConfig` 接口和 `org.apache.velocity.tools.generic.Tool` 接口,例如: ```java public class MyTag implements SafeConfig, Tool { private String name; @Override public void configure(Map<String, Object> map) { this.name = (String) map.get("name"); } public String execute() { return "Hello, " + name + "!"; } } ``` 其中,`configure` 方法用于获取配置信息,`execute` 方法用于执行标签的逻辑。 5. 在模板中使用自定义标签 在模板中使用自定义标签,例如: ``` <myTag name="world"/> ``` 这样就可以在模板中使用自定义标签了。 以上就是 Spring Boot 整合 Velocity 并使用自定义标签的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值