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表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路 ...
随机推荐
- web页面记住密码存在安全问题 - 处理方式
现在一般安全网站都不会做记住密码功能,因为记住密码存在安全缺陷. 不考虑网络拦截问题,如果是登录页面记住密码,第二次登录,直接进入开发者模式修改类型为text即可看到密码. 处理方式: 1.把auto ...
- maximum subarray problem
In computer science, the maximum subarray problem is the task of finding the contiguous subarray wit ...
- Linux 通过os进程pid找到端口号
[root@xxxx conf]# netstat -lutpn|grep tcp /java tcp /java tcp /java tomcat 监听的一些端口
- My97DatePicker日期范围限制
1.动态时间范围限制: 可以通过系统给出的动态变量,如%y(当前年),%M(当前月)等来限制日期范围,还可以通过{}进行表达式运算,如:{%d+1}:表示明天. 格式 说明 %y 当前年 %M 当 ...
- 基于SNMP的路由拓扑发现算法收集
一.三层(网络层)发现 算法来源:王娟娟.基于SNMP的网络拓扑发现算法研究.武汉科技大学硕士学位论文,2008 数据结构: 待检路由设备网关链表:存放指定深度内待检路由设备的网关信息,处理后删除. ...
- linux后台运行和关闭、查看后台任务
转自:http://www.cnblogs.com/kaituorensheng/p/3980334.html fg.bg.jobs.&.nohup.ctrl+z.ctrl+c 命令 一.&a ...
- 全局压缩http响应头
见代码: public class CompressAttribute : ActionFilterAttribute { public override void OnActionExecuting ...
- MVP社区巡讲照片集
今天MVP社区巡讲在北京利星行微软大厦连同SQL PASS社区合办了一次线下活动,这次互动汇集了在北京大多数的微软MVP,他们都是微软认可的有着各微软产品和技术特长的技术专家,无论是MVP社区巡讲还是 ...
- 手机WebAPP设计注意事项和解决方法
1. 基本手机网页设计 1.1 wap端的网站表头 wap端的网站,写的时候首先注意表头,因为是手机端的,所以和我们平常用的web端页面的不一样,表头为: 1.2 尽量少使用水平滚动. 水平滚动除了比 ...
- C# 与 Microsoft Expression Encoder实现屏幕录制
在日常开发中,我们会经常遇到屏幕录制的需求.在C#中可以通过Expression Encoder的SDK实现这样的需求.首先需要下载Expression Encoder SDK,实现代码: priva ...