java velocity 工具类_【java工具类】对velocity的封装

下面是对velocity的封装,参考了这篇文章:

【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);

}

}

算起来,freemarker我封装了,velocity我封装了,javascript的encodeURI encodeURIComponent我参考其他人实现了,数据库连接池直接用网上,properties文件读写也封装了,html的解码编码形式:8;xxx̕也完成,仿照asp.net的datatable,datacolumn,datarow也完成,对http协议的字符解析与参数,文件上传解析也完成,

最近做的工具也算很多了。

下一篇将描述如何编写自己的代码生成器,附带源代码及生成器采用的模板一份。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值