`

代码生成框架Velocity

阅读更多
代码生成框架Velocity
Velocity是一个基于Java的模板引擎,用户可以使用模板语言VTL来引用由Java代码定义的对象。
Velocity通常可以作为动态生成页面而广泛使用,还是一种功能强大的代码生成工具。
Velocity模板类似于JSP文件,当客户端发送请求后,Velocity引擎江根据模板产生动态地页面。如果要使用Velocity生成动态页面,需要扩展VelocityServlet类来实现请求的处理,并通过handleRequest方法返回一个模板变量,Velocity会负责模板到页面的转换。
它还可以从模板产生SQL脚本、XML及Java代码等。
1)模板文件
扩展名为“.vm”,是一个文本文件。
2)Java程序
可以为VelocityServlet的子类。
例:
(1)helloworld.vm
##test assign
#set($name = "gan.shu.man")
Employee name: $gan.shu.man

##test condition
#if($name == "gan.shu.man")
$name: very good!!
#else
$name: sorry!!
#end

Product information
##test circular
#foreach($product in $productList)
$product.Name    $$product.Price
#end

##test program assign
Total Price: $$totalPrice


(2)HelloWorldVTL.java
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
public class HelloWorldVTL {
	public static void main(String[] args) throws Exception{
		Velocity.init();
		Template template = Velocity.getTemplate("./src/helloworld.vm");
		VelocityContext ctx = new VelocityContext();
		Collection products = new ArrayList();
		products.add(new Product("Product 1",12.99));
		products.add(new Product("Product 2",13.99));
		products.add(new Product("Product 3",11.99));
		ctx.put("productList", products);
		Iterator itr = products.iterator();
		double total = 0.00;
		while(itr.hasNext()){
			Product p = (Product)itr.next();
			total+=p.getPrice();
		}
		ctx.put("totalPrice", new Double(total));
		Writer writer = new StringWriter();
		template.merge(ctx, writer);
		System.out.println(writer.toString());
	}
}


(3)Product.java
public class Product {
	private String name;
	private double price;
	public Product(String name, double price) {
		super();
		this.name = name;
		this.price = price;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
}


输出:
2008-3-10 2:45:12 org.apache.velocity.runtime.log.JdkLogChute log
信息: FileResourceLoader : adding path '.'
2008-3-10 2:45:12 org.apache.velocity.runtime.log.JdkLogChute log
信息: Null reference [template './src/helloworld.vm', line 3, column 16] : $gan.shu.man cannot be resolved.
Employee name: $gan.shu.man

gan.shu.man: very good!!

Product information
Product 1    $12.99
Product 2    $13.99
Product 3    $11.99

Total Price: $38.97

3)处理流程:
使用Velocity生成过程如下:
(1)初始化模板引擎;
(2)加载模板文件;
(3)创建模板上下文;
(4)给模板变量赋值;
(5)替换模板中的值生成代码。
通过模板生成代码是比较好的选择,模板在某种意义上来说就是配置文件的一种,当生成文件内容修改后,用户不需要修改源程序,只需要修改模板文件即可,提高了代码的可维护性。
6
1
分享到:
评论

相关推荐

    SpringBoot Velocity 代码生成模板

    SpringBoot集成Velocity代码生成模板是现代Java开发中的一个重要工具,它极大地提高了开发效率,尤其是在处理大量数据表映射到业务层代码时。Spring Boot作为一款轻量级的框架,简化了初始化和配置过程,而Velocity...

    maven+springMVC+mybatis+velocity+mysql+junit 代码生成器

    【标题】"maven+springMVC+mybatis+velocity+mysql+junit 代码生成器" 描述了一个集成开发环境,这个环境结合了多种技术,旨在帮助开发者快速、高效地生成应用程序的基础代码。以下是这些技术及其相关知识点的详细...

    Velocity代码生成工具

    **Velocity代码生成工具**主要用于自动生成基础代码框架,这包括但不限于实体类、DAO层、Service层等常见的项目骨架代码。使用该工具可以极大地提高开发效率,减少重复工作量,并为后续的开发工作打下坚实的基础。 ...

    X-gen代码生成框架PPT及工程代码

    **X-gen代码生成框架** 是一个专为提升软件开发效率而设计的工具,它通过自动化的方式帮助开发者快速生成代码,从而减少重复性工作,提高工作效率。这个框架的主要目标是简化和标准化开发流程,使得开发团队可以更加...

    最快速的java代码生成器 rapid-generator

    此外,Rapid-Generator还提供了丰富的插件机制,允许开发者扩展其功能,如集成其他框架的代码生成、增加新的生成策略等。这使得Rapid-Generator能适应各种复杂的开发环境,满足不同项目的需求。 在压缩包"rapid-...

    一个粗糙的代码生成器,基于velocity

    代码生成器是一种软件工具,它能够自动生成特定的源代码,帮助开发者快速构建应用的基础框架,减少重复性工作。基于Velocity,这个生成器可能允许用户通过定义模板来定制生成的代码,比如创建数据库访问层、实体类、...

    使用Velocity Swing制作的代码生成工具

    【标题】"使用Velocity Swing制作的代码生成工具"是一个基于Java Swing UI框架和Velocity模板引擎开发的代码自动化生成工具。这个工具旨在帮助开发者快速生成符合特定模式的代码,减轻重复劳动,提高开发效率。 ...

    java代码生成工具

    8. **模板引擎**: 代码生成工具往往内置或支持某种模板引擎,如FreeMarker或Velocity,它们允许开发者自定义代码模板,以满足特定的编码风格或需求。 总的来说,Java代码生成工具通过集成Java、MyBatis、Bootstrap...

    基于SpringBoot的代码生成器的设计和实现.doc

    3. 模板设计与管理:通过灵活的模板机制,代码生成器可以适应不同的编程规范和框架。开发者可以定制模板,以生成符合特定项目需求的代码,提高了代码生成的灵活性和适用性。 该系统采用Apache Velocity作为模板引擎...

    Java源代码生成器代码框架:SpringMVCmybatisVelocity

    Java源代码生成器是一种工具,它能够自动生成符合特定设计模式和规范的Java代码,极大地提高了开发效率。在这个特定的项目中,代码框架基于SpringMVC、MyBatis和Velocity这三个核心组件,构建了一个经典的三层架构...

    java代码生成器(mysql版)

    7. **模板引擎**:为了生成上述各种类型的类,代码生成器通常会使用模板引擎,如FreeMarker或Velocity,预先定义好模板,然后将数据库元数据填充到模板中,生成相应的Java代码。 8. **用户界面与交互**:对于开发者...

    java代码生成器mybatis

    MyBatis代码生成器支持使用FreeMarker或Velocity作为模板引擎,用户可以根据需要修改或创建新的模板,以满足特定的代码风格和项目规范。例如,可以通过修改模板来添加Lombok注解,实现无getter/setter的简洁编码。 ...

    代码生成器源代码

    在实际应用中,代码生成器可以帮助团队快速构建项目框架,减少重复劳动,提升开发效率。然而,也需要注意,过度依赖代码生成可能导致代码结构过于僵化,不易维护。因此,合理的使用和定制是关键。 总的来说,“代码...

    javaee代码生成器

    3. **模板引擎**:JavaEE代码生成器通常使用模板引擎,如FreeMarker或Velocity,来实现代码模板的解析和替换。模板引擎允许开发者定义变量和逻辑,然后在生成代码时填充这些变量和执行逻辑。 4. **元数据**:元数据...

    java 代码生成器(java开发,附加源代码)

    2. **元数据解析**:通常,代码生成器需要从数据库或其他数据源获取元数据,例如表结构、字段类型等,这可能涉及到JDBC或ORM框架如Hibernate、MyBatis的使用。 3. **代码模板设计**:开发者需要设计符合项目规范的...

    swing版代码生成器

    代码生成器则可以自动化这个过程,根据用户的选择自动生成相应的代码框架。这款SwingCodeGen工具就实现了这样的功能,通过交互式的图形界面,用户可以定制化生成的代码类型、结构以及细节。 【codegen】是代码生成...

    MP代码生成器所需依赖

    2. **Velocity模板引擎**:压缩包中的"velocity"文件可能包含 Velocity 模板,它是代码生成器用于生成实际Java代码的模版。Velocity是一个强大的文本处理引擎,可以用于生成HTML、XML、Java源代码等,是代码生成器中...

    j2ee代码生成器源代码

    6. **模板引擎**:代码生成器会使用模板引擎(如FreeMarker或Velocity)来动态生成源代码。模板文件定义了代码的结构和格式,可以通过修改模板来自定义生成的代码风格。 7. **配置和参数设置**:用户可以通过配置...

Global site tag (gtag.js) - Google Analytics