本文讲解了velocity主要的模板方法,会了这些方法基本上就会了velocity。同时本java工程是用maven管理,(maven的使用,大家可以看我的另一篇文章)。用到的是1.7版本。代码如下:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cloud</groupId> <artifactId>velocity_01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>velocity_01</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency> </dependencies> </project>
测试当中要用到的两个model类:
Person.java:
package com.cloud.velocity.model; public class Person { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Person() {} public Person(int id, String name) { this.id = id; this.name = name; } }
Product.java
package com.cloud.velocity.model; public class Product { private String id; private String name; private String note; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } public Product() { } public Product(String id, String name, String note) { this.id = id; this.name = name; this.note = note; } }
用到的工具类:
DateUtil.java
package com.cloud.velocity.utils; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { public String dateFormat(String formatStr, Date date) { SimpleDateFormat sdf = new SimpleDateFormat(formatStr); return sdf.format(date); } }
Velocity的配置文件:
velocity.properties
file.resource.loader.path=D:\\neil\\hadoop_workspace\\velocity_01\\src\\main\\resources input.encoding=UTF-8 output.encoding=UTF-8 directive.foreach.counter.name=index directive.foreach.counter.initial.value=0
各种模板文件:
helloWorld.vm
${hello}
person.vm
${p.id} = ${p.name}
persons.vm
#foreach($person in $persons) $person.id = $person.name #end
maps.vm
#foreach($key in $maps.keySet()) $index = $key = $maps.get($key) #end ================================ #foreach($entry in $maps.entrySet()) $entry.getKey() = $entry.getValue() #end
pageSet.vm
#set($name="cloud") $name =================== #set($age=22) $age =================== #set($arrs=["chris", "cloud"]) #foreach($arr in $arrs) $arr #end ==================== #set($ints=[1..15]) #foreach($int in $ints) $int #end
ifelse.vm
#if($bool) Is true #else Is false #end
date.vm
$dateFormat.dateFormat("yyyy-MM-dd HH:mm:ss", $now)
html.vm
<html> <head> <title>$product.name -- Cloud</title> </head> <body> <h1>$product.name</h1> <br /> <div> Note:$product.note </div> </body> </html>
最重要的测试类:
VelocityTest.java
package com.cloud.velocity.test; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.StringWriter; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.junit.BeforeClass; import org.junit.Test; import com.cloud.velocity.model.Person; import com.cloud.velocity.model.Product; import com.cloud.velocity.utils.DateUtil; public class VelocityTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } /** * 其中helloWorld.vm中的格式为:${hello},即此种情况是最简单的,单元测试的结果 * 就是将"Cloud, 您好!!!"原样输出。 */ @Test public void test() { Velocity.init("src/main/resources/velocity.properties"); VelocityContext context = new VelocityContext(); context.put("hello", "Cloud, 您好!!!"); Template template = Velocity.getTemplate("helloWorld.vm"); StringWriter writer = new StringWriter(); template.merge(context, writer); System.out.println(writer.toString()); } /** * 这里测试的情况为:如何将一个JavaBean中的内容在模板中显示出来。 * person.vm中内容为:${p.id} = ${p.name} * 单元测试结果:22 = cloud */ @Test public void testBean() { Velocity.init("src/main/resources/velocity.properties"); VelocityContext context = new VelocityContext(); context.put("p", new Person(22, "cloud")); Template template = Velocity.getTemplate("person.vm"); StringWriter writer = new StringWriter(); template.merge(context, writer); System.out.println(writer.toString()); } /** * 这里测试的情况为:在模板中如何迭代一个list集合(数组也是一样的)。 * persons.vm中的内容为: * #foreach($person in $persons) * $person.id = $person.name * #end * 单元测试的结果为: * 22 = cloud * 23 = chris */ @Test public void loopList() { Velocity.init("src/main/resources/velocity.properties"); VelocityContext context = new VelocityContext(); context.put("persons", new Person[] {new Person(22, "cloud"), new Person(23, "chris")}); Template template = Velocity.getTemplate("persons.vm"); StringWriter writer = new StringWriter(); template.merge(context, writer); System.out.println(writer.toString()); } /** * 这里测试的情况为:在模板中如何迭代一个map集合。 * maps.vm中的内容为: * #foreach($key in $maps.keySet()) * $index = $key = $maps.get($key) * #end * * ================================ * #foreach($entry in $maps.entrySet()) * $entry.getKey() = $entry.getValue() * #end * 其实这里是列出在模板中显示map集合内容的两种方法。其中$index是一个计数器。它的配置是在velocity.properties中 * directive.foreach.counter.name=index //这里配置了计数器的名字:即为index,默认的为:velocityCount。 * directive.foreach.counter.initial.value=0 //这里是设置计数器的起始值,即为0。默认为:1。 * 单元测试的结果为: * 0 = 22 = cloud * 1 = 23 = chris * * ================================ * 22 = cloud * 23 = chris */ @Test public void loopMap() { Velocity.init("src/main/resources/velocity.properties"); VelocityContext context = new VelocityContext(); Map<String, String> maps = new HashMap<String, String>(); maps.put("22", "cloud"); maps.put("23", "chris"); context.put("maps", maps); Template template = Velocity.getTemplate("maps.vm"); StringWriter writer = new StringWriter(); template.merge(context, writer); System.out.println(writer.toString()); } /** * 这里测试的情况为:为模板中的变量赋值。 * pageSet.vm中内容为: * #set($name="cloud") * $name * =================== * #set($age=22) * $age * =================== * #set($arrs=["chris", "cloud"]) * #foreach($arr in $arrs) * $arr * #end * ==================== * #set($ints=[1..15]) * #foreach($int in $ints) * $int * #end * 测试结果为: * cloud * ==================== * 22 * ==================== * chris * cloud * ==================== * 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //此处的显示效果应为:竖着显示的,为了节约空间,在此就横着写了。 *注意:$ints=[1..15]这种赋值形式是为:为这个变量赋值连续的变量。 * */ @Test public void pageSet() { Velocity.init("src/main/resources/velocity.properties"); VelocityContext context = new VelocityContext(); Template template = Velocity.getTemplate("pageSet.vm"); StringWriter writer = new StringWriter(); template.merge(context, writer); System.out.println(writer.toString()); } /** * 这里测试的是在模板中如何用条件判断语句。 * ifelse.vm内容为: * #if($bool) * Is true * #else * Is false * #end * 单元测试结果为: * Is false */ @Test public void ifelse() { Velocity.init("src/main/resources/velocity.properties"); VelocityContext context = new VelocityContext(); context.put("bool", false); Template template = Velocity.getTemplate("ifelse.vm"); StringWriter writer = new StringWriter(); template.merge(context, writer); System.out.println(writer.toString()); } /** * 这里测试的结果为:如何在模板中按特定的格式显示出日期。 * 我在此没有去使用第三方jar包,而是利用velocity有很好的 * 扩展功能实现的。 * 在我写了一个DateUtil工具类。 * date.vm的内容为: * $dateFormat.dateFormat("yyyy-MM-dd HH:mm:ss", $now) * 单元测试结果为: * 2013-11-10 10:43:22 */ @Test public void dateFormat() { Velocity.init("src/main/resources/velocity.properties"); VelocityContext context = new VelocityContext(); context.put("now", new Date()); context.put("dateFormat", new DateUtil()); Template template = Velocity.getTemplate("date.vm"); StringWriter writer = new StringWriter(); template.merge(context, writer); System.out.println(writer.toString()); } /** * 这里实现的功能是:将模板中的内容输出到一个文件当中。 */ @Test public void outFile() { try { Velocity.init("src/main/resources/velocity.properties"); Product product = new Product("p0010", "cloud", "Good job!"); VelocityContext context = new VelocityContext(); context.put("product", product); Template template = Velocity.getTemplate("html.vm"); File saveFile = new File("src/main/html/product.html"); if (!saveFile.getParentFile().exists()) { saveFile.getParentFile().mkdirs(); } FileOutputStream outStream = new FileOutputStream(saveFile); OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream, "UTF-8"); BufferedWriter writer = new BufferedWriter(outStreamWriter); template.merge(context, writer); writer.flush(); writer.close(); } catch (Exception e) { } } }
相关推荐
Spring MVC 3、Velocity 1.7、Maven 和 MySQL 是构建现代Web应用程序的四个关键组件,它们共同为开发者提供了一套强大而灵活的工具集。让我们深入了解一下这些技术及其在项目中的应用。 1. Spring MVC 3:Spring ...
NULL 博文链接:https://twb.iteye.com/blog/265761
在SpringMVC和Velocity的整合项目中,Maven可以帮助我们管理Spring、Velocity以及其它依赖库的版本,确保项目的可重复构建。 将SpringMVC、Velocity和Maven整合在一起,可以按照以下步骤进行: 1. **配置POM.xml**...
本实例将探讨如何使用Maven作为项目管理工具,结合Spring MVC作为控制层框架,Mybatis作为数据访问层框架,以及Velocity作为视图层模板引擎,来构建一个完整的Java Web应用。以下是关于这些技术的详细解释和整合步骤...
在本项目中,Maven被用来管理项目的依赖关系,确保Spring、SpringMVC、Mybatis和Velocity等库的正确引入和版本控制。 整合这些技术通常涉及以下步骤: 1. **创建Maven项目**:首先,我们需要一个Maven项目结构,...
** Maven与Velocity整合详解 ** Maven和Velocity都是在Java开发中非常重要的工具。Maven是一个项目管理和综合工具,它帮助开发者管理项目的构建、报告和文档。Velocity则是一个基于Java的模板引擎,它允许开发者将...
在"spring3 mvc+mybatis+velocity+maven"项目中,Maven用于管理和构建整个项目,通过在pom.xml文件中声明依赖关系,Maven会自动下载并管理所有必要的库,简化了项目的构建和部署流程。 总结起来,这个项目展示了...
springMVC架构,maven , velocity , 数据源配置在项目中(springMVC的配置文件中)。
在本实例中,Maven负责管理所有依赖项,如Spring、Mybatis和Velocity的版本,确保它们之间的兼容性。 2. Spring MVC:Spring MVC是Spring框架的一部分,它是一个用于构建Web应用程序的Model-View-Controller(MVC)...
本项目框架“maven+springMVC+mybatis+velocity+mysql+junit”提供了一种高效、灵活且可维护的解决方案。以下将详细讲解这些组件及其作用。 1. Maven: Maven是一个项目管理工具,用于构建、依赖管理和项目信息...
Spring+Hibernate+SpringMVC+Velocity+Maven整合
"maven+druid+mybatis+velocity"就是一个常见的高效开发架构,它涵盖了构建管理、数据库连接池、持久层操作以及模板引擎等多个核心部分。下面将详细阐述这些组件及其整合方式。 1. Maven:Maven是Apache软件基金会...
总结起来,"maven搭建spring mvc(velocity+mybatis)"是一个典型的Java Web开发流程,它结合了项目管理、Web框架、模板引擎和持久层工具。通过这样的实践,开发者可以更好地理解和掌握现代企业级应用的构建方式,提升...
Spring MVC负责处理请求和响应,Maven简化了项目的构建和依赖管理,而Velocity则为呈现动态内容提供了简洁的模板语言。通过熟练掌握这三个工具的使用,开发者可以构建出高质量、易于维护的Web应用程序。
例如,Velocity可以与Turbine框架结合,为Turbine提供模板服务,构建更强大的Web应用程序,支持真正的MVC模式开发,使得业务逻辑、视图呈现和控制器管理各自独立,提高了代码的可维护性和扩展性。 在实际应用中,...
1. Maven:Maven 是一个项目管理工具,它简化了Java项目的构建、依赖管理和项目信息管理。通过在`pom.xml`文件中定义项目依赖,Maven可以自动下载所需的库,并按照预定义的生命周期进行构建,包括编译、测试、打包和...
【标题】"maven+velocity+springmvc+ibatis+mysql"是一个综合性的Web项目构建方案,它结合了多个开源技术来创建一个用户管理系统。在这个系统中,Maven作为项目管理和构建工具,Velocity用于模板引擎生成动态网页,...
### Velocity配置文件详解 #### 一、概述 在Apache Velocity框架中,`velocity.properties`配置文件扮演着核心角色。此文件通常位于`org.apache.velocity.runtime.defaults`包下,并且定义了Velocity运行时所需的...
在构建企业级Web应用时,"maven+springmvc+spring+ibatis+velocity+mysql"这个组合提供了高效且灵活的开发框架。让我们逐一解析这些技术及其在项目中的作用。 **Maven** 是一个项目管理和综合工具,它帮助开发者...