资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
真诚为您提供优质参考资料,若有不当之处,请指正。代码生成框架VelocityVelocity是一个基于Java的模板引擎,用户可以使用模板语言VTL来引用由Java代码定义的对象。 Velocity通常可以作为动态生成页面而广泛使用,还是一种功能强大的代码生成工具。 Velocity模板类似于JSP文件,当客户端发送请求后,Velocity引擎江根据模板产生动态地页面。如果要使用Velocity生成动态页面,需要扩展VelocityServlet类来实现请求的处理,并通过handleRequest方法返回一个模板变量,Velocity会负责模板到页面的转换。 它还可以从模板产生SQL脚本、XML及Java代码等。 1)模板文件 扩展名为“.vm”,是一个文本文件。 2)Java程序 可以为VelocityServlet的子类。 例: (1)helloworld.vm Java代码1. #testassign 2. #set($name=gan.shu.man) 3. Employeename:$gan.shu.man 4. 5. #testcondition 6. #if($name=gan.shu.man) 7. $name:verygood! 8. #else9. $name:sorry! 10. #end 11. 12. Productinformation 13. #testcircular 14. #foreach($productin$productList) 15. $product.Name$product.Price 16. #end 17. 18. #testprogramassign 19. TotalPrice:$totalPrice#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!#endProduct information#test circular#foreach($product in $productList)$product.Name $product.Price#end#test program assignTotal Price: $totalPrice(2)HelloWorldVTL.java Java代码 1. importjava.io.StringWriter; 2. importjava.io.Writer; 3. importjava.util.ArrayList; 4. importjava.util.Collection; 5. importjava.util.Iterator; 6. 7. importorg.apache.velocity.Template; 8. importorg.apache.velocity.VelocityContext; 9. importorg.apache.velocity.app.Velocity; 10. publicclassHelloWorldVTL 11. publicstaticvoidmain(Stringargs)throwsException 12. Velocity.init(); 13. Templatetemplate=Velocity.getTemplate(./src/helloworld.vm); 14. VelocityContextctx=newVelocityContext(); 15. Collectionproducts=newArrayList(); 16. products.add(newProduct(Product1,12.99); 17. products.add(newProduct(Product2,13.99); 18. products.add(newProduct(Product3,11.99); 19. ctx.put(productList,products); 20. Iteratoritr=products.iterator(); 21. doubletotal=0.00; 22. while(itr.hasNext() 23. Productp=(Product)itr.next(); 24. total+=p.getPrice(); 25. 26. ctx.put(totalPrice,newDouble(total); 27. Writerwriter=newStringWriter(); 28. template.merge(ctx,writer); 29. System.out.println(writer.toString(); 30. 31. 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 ExceptionVelocity.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 Java代码 1. publicclassProduct 2. privateStringname; 3. privatedoubleprice; 4. publicProduct(Stringname,doubleprice) 5. super(); 6. this.name=name; 7. this.price=price; 8. 9. publicStringgetName() 10. returnname; 11. 12. publicvoidsetName(Stringname) 13. this.name=name; 14. 15. publicdoublegetPrice() 16. returnprice; 17. 18. publicvoidsetPrice(doubleprice) 19. this.price=price; 20. 21. 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 ca
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号