volicity 模板类,java操作配置文件
import java.io.StringWriter;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set; import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.context.Context; public class VMRenderUtils { static public final String vmfileName = "email.vm";
static private final Properties p = new Properties();
static {
p.put("file.resource.loader.class",
"org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
Velocity.init(p);
} static public String render(String flag, String emailSubject, String emailHost,
String emailFrom, String emailPassword, Map<String, HashSet<String>> moduleInCharge) {
Template template = Velocity.getTemplate(vmfileName); StringBuilder moduleInChargeString = new StringBuilder(); Set<String> key = moduleInCharge.keySet();
for (Iterator<String> it = key.iterator(); it.hasNext();) {
String s = (String) it.next();
moduleInChargeString.append(s+"="+HashSetToString(moduleInCharge.get(s))+"\n");
} Context context = buildContext(flag, emailSubject, emailHost,
emailFrom, emailPassword, moduleInChargeString.toString());
StringWriter sw = new StringWriter();
template.merge(context, sw);
return sw.toString();
} static Context buildContext(String flag, String emailSubject, String emailHost,
String emailFrom, String emailPassword, String moduleInCharge) {
Context context = new VelocityContext();
context.put("flag", flag);
context.put("emailSubject", emailSubject);
context.put("emailHost", emailHost);
context.put("emailFrom", emailFrom);
context.put("emailPassword", emailPassword); context.put("moduleInCharge", moduleInCharge); return context;
} private static String HashSetToString(HashSet<String> hashSet) {
String result = "";
if(hashSet == null) {
return result;
} for(String at:hashSet) {
result += (at+",");
}
if(!isBlank(result)) {
result = result.substring(0,result.length()-1);
}
return result;
}
private static boolean isBlank(String value) {
if(value == null || "".equals(value)) {
return true;
}
return false;
}
}
email.vm文件
SUPER_ADMIN=huahuiyang@gmail.com #whether to send email
LOL_EMAIL=${flag} #email subject
EMAIL_SUBJECT=${emailSubject}
EMAIL_HOST=${emailHost}
EMAIL_FROM=${emailFrom}
EMAIL_PASSWORD=${emailPassword} #send mail to....
${moduleInCharge}
java如何调用:
URL filePath = Thread.currentThread().getContextClassLoader().getResource("email.properties");
File file = new File(filePath.toString().substring(5));
FileWriter fw;
try {
fw = new FileWriter(file);
fw.write(configureFile);
fw.close();
} catch (IOException e) {
logger.warn("fail to update configure file email.properties");
}
volicity 模板类,java操作配置文件的更多相关文章
- Java中Properties类的操作配置文件
知识学而不用,就等于没用,到真正用到的时 候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用 Java来写, ...
- 错误: 找不到或无法加载主类 java操作hbase出错
用java操作hbase 利用maven引入hbase包后发现无法启动程序,然后网上说是包的冲突. 我引入了下面三个包然后程序就不能运行了. <dependency> <groupI ...
- java 操作配置文件 .properties
package com.dms.common; import java.io.File; import java.io.FileInputStream; import java.io.FileNotF ...
- java操作redis集群配置[可配置密码]和工具类(比较好用)
转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>red ...
- Spring-继承JdbcDaoSupport类后简化配置文件内容
正常情况下,我们在实现类中想要晕用模板类需要在配置文件中注入连接池,再将连接池注入给模板类,然后在实现类中得到. <!-- 配置C3P0连接池 --> <bean id = &quo ...
- Spring中的JDBC模板类入门
1.Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单 2.提供了JDBC模板,Spring框架提供的 *JdbcTemplate类 3.Spring框架可以整合Hib ...
- java 操作zookeeper
java 操作zookeeper(一) 首先要使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper ...
- Java中Properties类的操作
知识学而不用,就等于没用,到真正用到的时候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加 ...
- Java NIO Path接口和Files类配合操作文件
Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...
随机推荐
- October 3rd 2016 Week 41st Monday
Better to light one candle than to curse the darkness. 与其诅咒黑暗,不如燃起蜡烛. Sitting in the darkness and wa ...
- 模拟赛1102d1
炮(cannon)[题目描述]众所周知,双炮叠叠将是中国象棋中很厉害的一招必杀技.炮吃子时必须隔一个棋子跳吃,即俗称"炮打隔子". 炮跟炮显然不能在一起打起来,于是rly一天借来了 ...
- GBDT原理实例演示 2
一开始我们设定F(x)也就是每个样本的预测值是0(也可以做一定的随机化) Scores = { 0, 0, 0, 0, 0, 0, 0, 0} 那么我们先计算当前情况下的梯度值 ...
- ActiveMQ的几种集群配置
ActiveMQ是一款功能强大的消息服务器,它支持许多种开发语言,例如Java, C, C++, C#等等.企业级消息服务器无论对服务器稳定性还是速度,要求都很高,而ActiveMQ的分布式集群则能很 ...
- Linux常用命令学习1---(安装、文件系统、目录操作命令cd ls mv cp rm mkdir、链接命令ln……)
1.理解Linux的文件系统:分区和挂载点 挂载点和路径名无关 /根目录下的/boot完全可以时独立于 /的独立的挂载点,只要你设置就可以 linux安装时候,必须要有这两个分区 / 和 ...
- MVC4 使用概述
1.Bundle使用: http://www.cnblogs.com/inline/p/3897256.html 2.MVC总结: http://www.cnblogs.com/xlhblogs/ar ...
- ytu 1059: 判别该年份是否闰年(水题,宏定义)
1059: 判别该年份是否闰年 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 222 Solved: 139[Submit][Status][Web ...
- tornado使用(Mac)
安装需求 Tornado 在 Python 2.5, 2.6, 2.7 中都经过了测试.要使用 Tornado 的所有功能,你需要安装 PycURL (7.18.2 或更高版本) 以及 simplej ...
- 手机web页面制作时的注意事项
一.手机页面的标准头规范 字符编码使用utf-:指定页面手机内存缓存中的存储时间段 device-width:通知浏览器使用设备的宽度作为可视区的宽度 initial-scale - 初始的缩放比例 ...
- Python3 基本数据类型注意事项
Python3 基本数据类型 教程转自菜鸟教程:http://www.runoob.com/python3/python3-data-type.html Python中的变量不需要声明.每个变量在使用 ...