程式碼生成框架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
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)替換模板中的值生成程式碼。
通過模板生成程式碼是比較好的選擇,模板在某種意義上來說就是配置檔案的一種,當生成檔案內容修改後,使用者不需要修改源程式,只需要修改模板檔案即可,提高了程式碼的可維護性。
相關文章
- 【OpenAI】私有框架程式碼生成實踐OpenAI框架
- JNPF低程式碼開發框架程式碼 生成器設計框架
- Tp框架 生成二維碼框架
- 開源框架 - 新 程式碼生成器 WebFirst / .NET Core框架Web
- Velocity指令碼入門教程指令碼
- 《程式碼大全》程式碼生成
- SpringBoot整合MyBatis-Plus框架(程式碼生成器)Spring BootMyBatis框架
- JAVA快速開發框架 一鍵生成表單模板程式碼Java框架
- springMvc Velocity tool 原始碼分析SpringMVC原始碼
- 生成驗證碼程式程式碼
- 【Android】一鍵生成MVP程式碼-DevMvp快速開發框架AndroidMVPdev框架
- YII2.0框架生成二維碼框架
- UI2Code智慧生成Flutter程式碼——機器生成程式碼UIFlutter
- Go 語言,開源服務端程式碼自動生成 框架 – EasyGoServerGo服務端框架Server
- Go 語言,開源服務端程式碼自動生成 框架 - EasyGoServerGo服務端框架Server
- Java SSM springmvc spring mybatis 集程式碼生成器 後臺框架原始碼JavaSSMSpringMVCMyBatis框架原始碼
- golang程式碼生成工具Golang
- Go - 程式碼生成工具Go
- 程式碼生成工具(一)
- freemarker程式碼生成
- mybatisplus程式碼生成MyBatis
- 程式碼生成器
- Code Velocity: 環境&持續測試&程式碼門禁 - 林紫嫣
- AOS 自動生成程式碼(三) Service生成
- (程式碼生成)JS寫的程式碼生成器-編碼也可以這麼爽..JS
- GO程式碼生成程式碼小思小試Go
- springmvc+spring jdbc+velocity入門教程及其程式碼例項SpringMVCJDBC
- velocity視訊
- Protobuf 生成 Go 程式碼指南Go
- freemarker 生成 Java 程式碼Java
- Laravel 程式碼生成器Laravel
- svg生成矩形效果程式碼SVG
- js 程式碼生成器JS
- Emit動態生成程式碼MIT
- ZT 程式碼生成器
- VAE生成人臉程式碼
- mybatis-plus程式碼生成MyBatis
- DDPM生成人臉程式碼