【java工具类】对velocity的封装
来源:互联网 发布:js timer控件 编辑:程序博客网 时间:2024/04/29 08:58
下面是对velocity的封装,参考了这篇文章:
http://kodak-zhou.iteye.com/blog/970682
【VelocityHelper】
package Easis.ViewEngine;import java.io.BufferedWriter;import java.io.OutputStreamWriter;import java.io.StringWriter;import java.util.ArrayList;import java.util.Properties;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;import org.apache.velocity.app.Velocity;public class VelocityHelper {private String _tplRoot="";private VelocityContext _context=new VelocityContext(); public VelocityContext getVelocityContext(){ return _context; } public void clear(){ _context=new VelocityContext(); } public VelocityHelper(String tplRootPath){ _initialization("utf-8", "utf-8", tplRootPath); } public VelocityHelper(String input_encoding,String output_encoding,String tplRootPath){ _initialization(input_encoding, output_encoding, tplRootPath); } public boolean put(String key,Object value){ if(_context.containsKey(key)==true){ _context.remove(key); _context.put(key,value); } else{ _context.put(key,value); } return true; } public boolean remove(String key){ if(_context.containsKey(key)==false){ return false; } _context.remove(key); return true; }private void _initialization(String input_encoding,String output_encoding,String tplRootPath){ /* first, we init the runtime engine. Defaults are fine. */ this._tplRoot=tplRootPath==null?"":tplRootPath; Properties p = new Properties(); //设置输入输出编码类型。和这次说的解决的问题无关 p.setProperty(Velocity.INPUT_ENCODING, input_encoding); p.setProperty(Velocity.OUTPUT_ENCODING, output_encoding); //这里加载类路径里的模板而不是文件系统路径里的模板 p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); //也可以用下面方法指定一个绝对路径,不过这样要求你所有的模板都放在该路径下,是有局限的 //p.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, "模板路径"); try { Velocity.init(p); } catch(Exception e) { System.out.println("Problem initializing Velocity : " + e ); e.printStackTrace(); return; }} public String parseTempalte(String tplName,String encoding){ try{ String tplroot_and_tplName=""; if(_tplRoot.trim().length()>0){ tplroot_and_tplName=_tplRoot.trim()+"/"+tplName.trim(); } else{ tplroot_and_tplName=tplName.trim(); } tplroot_and_tplName=tplroot_and_tplName.replaceAll("/+","/"); StringWriter sw=new StringWriter(); Velocity.mergeTemplate(tplroot_and_tplName,encoding,_context,sw); String res=sw.toString(); sw.close(); return res; } catch (Exception e){ return e.toString(); } } public String evaluate(String velocityTplStrContent){ try{ StringWriter sw=new StringWriter(); Velocity.evaluate(_context,sw,"Use the velocity as str replacer.",velocityTplStrContent); String res=sw.toString(); sw.close(); return res; } catch (Exception e){ return e.toString(); } }}
【如何使用?】
模板文件放在src下面的tpl,名称为:test.vm,里面就一句话。
okkkkkk
package TestCase;import Easis.ViewEngine.VelocityHelper;public class testVelocityHelper { public static void main(String[] args){ VelocityHelper _ve=new VelocityHelper("/tpl"); String str1= _ve.parseTempalte("test.vm","utf-8"); System.out.println(str1); }}
最近做的工具也算很多了。
下一篇将描述如何编写自己的代码生成器,附带源代码及生成器采用的模板一份。
- 【java工具类】对velocity的封装
- 对log工具类的方法封装
- Java对类的封装
- java 封装工具类
- 对JDBC操作数据库的工具类的封装
- Java的System类封装工具类
- java实现Http工具类的封装
- Timber(对Log类封装的一个工具)
- velocity使用工具类
- java对数据库的封装
- Java 对数据库连接 的封装
- 封装的工具类
- JFinal+Velocity环境下封装根据.vm文件生成.html文件的工具案例
- Velocity 是一个基于 Java 的通用模板工具
- Java常见工具类封装
- java封装redis工具类
- Java封装JSON工具类
- 工具类的封装-sharePreference的封装
- vs2010 2012 c++ 为项目添加不同目录下文件方法
- 八年程序员之书籍篇--OS/Linux(二):Kernel
- mongodb的一些修改器(1)
- 红黑树C语言实现
- 连接词识别
- 【java工具类】对velocity的封装
- 彻底明白红黑树
- 如何做一名优秀的博士生:(一)时间的付出 施一公
- 一天的收获
- poj 1273 Drainage Ditches
- PyQt4学习资料
- 接口和抽象类异同
- 网站安全检测:推荐8款免费的 Web 安全测试工具
- 红黑树插入和删除结点的全程演示