博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
velocity 模板解析类
阅读量:6213 次
发布时间:2019-06-21

本文共 2744 字,大约阅读时间需要 9 分钟。

hot3.png

package com.renhenet.util;import java.io.StringWriter;import java.util.Date;import org.apache.commons.lang.StringUtils;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;import org.apache.velocity.app.VelocityEngine;import org.apache.velocity.context.Context;import com.renhenet.fw.ServiceLocator;import com.renhenet.modules.cache.CacheNeedsRefreshException;import com.renhenet.modules.cache.CacheService;import com.renhenet.web.VMUtils;import com.renhenet.web.WebConstants;import com.spinn3r.log5j.Logger;public class VMParser {	private static final Logger logger = Logger.getLogger();	private static final CacheService cacheService = (CacheService) ServiceLocator.getService("cacheService");	private static VelocityEngine engine;		private static VMUtils vMUtils = (VMUtils) ServiceLocator.getService("vMUtils");	// 配置文件的文件名,配置文件位于$BASE/conf下	private static final String DEFAULT_CONF_FILE = "/velocity.properties";	static {		engine = new VelocityEngine();		try {			String absolutePath = VMParser.class.getResource(DEFAULT_CONF_FILE).getFile();			engine.init(absolutePath);		} catch (Exception e) {			logger.error("init velocity engine occur exception.", e);		}	}	private static Template getTemplateByName(String templateName) {		Template template = null;		try {			template = engine.getTemplate(templateName);		} catch (Exception e) {			logger.error("getTemplateByName occur exception.", e);		}		return template;	}	private static Template getTemplateFromCache(String templateName) {		Template template = null;		if(StringUtils.isNotEmpty(templateName)) {			try {				template = (Template) cacheService.getFromCache("tempate", templateName, 5 * 60);			} catch (CacheNeedsRefreshException nre) {				template = getTemplateByName(templateName);				if (template != null) {					cacheService.putInCache("tempate", templateName, template);				}			}		}		return template;	}	public static String substitute(String templateName) {		return substitute(templateName, new VelocityContext());	}	public static String substitute(String templateName, Context context) {		// 设置一些公用的变量		putCommonVelocityContext(context);		if (StringUtils.isEmpty(templateName)) {			return StringUtils.EMPTY;		}		Template tmplate = getTemplateFromCache(templateName);		if (tmplate != null) {			StringWriter writer = new StringWriter();			try {				tmplate.merge(context, writer);				String restring = writer.toString();				writer.flush();				writer.close();				return restring;			} catch (Exception ex) {				logger.error("merge velocity with template occur exception.", ex);			}		}		return StringUtils.EMPTY;	}	private static void putCommonVelocityContext(Context context) {		context.put("vMUtils", vMUtils);	}}

转载于:https://my.oschina.net/chaoren8/blog/68875

你可能感兴趣的文章
怎么直接下载niconico的视频文件 (伪)(利用curllib)
查看>>
Myeclipse代码提示及如何设置自动提示
查看>>
[置顶] Hibernate4实战 之第五部分:Hibernate的事务和并发
查看>>
Python实现经典查找算法
查看>>
Linux学习---Day04
查看>>
PHP 利用fsockopen抓取页面后对内容做解析
查看>>
人之所以幸福,是因为相信幸福。
查看>>
Web前端研发工程师编程能力飞升之路
查看>>
C语言的谜题
查看>>
ubuntu server sudo出现sudo:must be setuid root 完美解决办法
查看>>
我的友情链接
查看>>
Cocos2d-html5循序渐进(1)-开发环境配置
查看>>
CP大于指定大小的文件到指定位置
查看>>
.net mvc Html.DropDownListFor 设置默认值无效
查看>>
部署RODC和RODNS加强分支办公处的信息和网络安全
查看>>
《Thinking in Java》笔记
查看>>
django开发环境部署(四)——uwsgi,nginx
查看>>
斯坦福NLP笔记3 —— Word tokenization
查看>>
leetcode----Longest Substring Without Repeating Characters
查看>>
UIBezierPath
查看>>