引用
1.最近做个项目,需求:每生成一个订单,给相应的用户发一条短信。短信模板存放在txt文件。模板以${mobile} 之类的作为占位符。文件的读取部分,抄红薯的开源代码
public class MyUtil {
private static final Logger log = Logger.getLogger(MyUtil.class);
private static final String TEMPLATE = "/msgTemplate.txt";
private static long lastCheck = -1L;
private static long lastModified = -1L;
private static final long CHECK_INTERVAL = 180000; // 3分钟检查一次
private static StringBuffer context = new StringBuffer();
// 模板文件读取
public static String getTemplate() throws IOException {
long ct = System.currentTimeMillis();
if ((ct - lastCheck) > CHECK_INTERVAL) {
File tmpFile = new File(TEMPLATE);
if (tmpFile.lastModified() > lastModified) {
synchronized (MyUtil.class) {
String tmp = null;
BufferedReader breader = null;
try {
breader = new BufferedReader(new InputStreamReader(
new FileInputStream(tmpFile)));
while ((tmp = breader.readLine()) != null) {
context.append(tmp);
}
} finally {
breader.close();
}
lastModified = tmpFile.lastModified();
}
}
lastCheck = ct;
}
return context.toString();
}
// 模板内容替换
public String getMsgByTemplate(Object obj) throws IOException,
SecurityException, NoSuchFieldException, IllegalArgumentException,
IllegalAccessException {
Class<?> clazz = obj.getClass();
String context = MyUtil.getTemplate(); // 得到模板内容
Set<String> set = new HashSet<String>();
int i = 0;
while (i < context.length()) {
int index = context.indexOf("${", i);
int end = context.indexOf("}", index);
if (index == -1)
break; // 找不到以${开头 中止循环
set.add(context.substring(index + 2, end).trim()); // 取得${mobile} 的
// 'mobile' 字符串
}
Map<String, String> map = new HashMap<String, String>();
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String tmp = iterator.next();
Field field = clazz.getDeclaredField(tmp);
field.setAccessible(true);
String value = field.get(obj).toString();
map.put(tmp, value); // 如map.put("mobile","13560023645");
}
for (Map.Entry<String, String> entry : map.entrySet()) {
// 替换模板中的类似${mobile}的占位符 为真正的字符.。
context = context.replaceAll("\\$\\{" + entry.getKey() + "\\}",
entry.getValue());
}
return context;
}
分享到:
相关推荐
"JavJava项目设计与开发范例.rar"这个名字看起来可能是拼写错误,但其内容可能是一系列的Java项目开发实例,涵盖了不同的设计模式和开发技巧。这些范例可以帮助你理解如何解决具体问题,比如数据处理、并发控制、...
为了帮助这些开发者们更好地掌握Java项目开发的全流程,提升自身的技能水平,有一本名为《JAVA项目开发全程实录》的书籍应运而生。这本书不仅是一本实践指南,更是一份详尽的项目开发实录,记录了从项目的启动到最终...
接下来,我们将基于这些信息深入探讨几个关键的知识点,帮助读者更好地理解Java项目的开发流程、常用技术和实践技巧。 ### 一、Java项目的整体架构 在进行任何Java项目的开发之前,了解其整体架构是非常重要的一步...
Java项目文档是软件开发过程中必不可少的一部分,它详细记录了项目的各个阶段、技术实现、设计思路以及团队协作等信息。在Java编程中,良好的文档能够帮助开发者理解代码逻辑,提高工作效率,便于后期维护和升级。...
(1)做项目时,不应该有 java 参考代码,这一点并不是绝对的,在起初的时候可以适当的参考别人写的,在后来就不能参考别人代码了,否者会形成眼高手低的习惯。 (2)做出来的系统一定要能满足实际的需求,不能做一...
在“Java项目学习资料”这个压缩包中,我们可以期待找到一系列与Java编程和项目开发相关的资源,这将是一个宝贵的学习平台,尤其对于那些希望深化Java技术理解并掌握实际项目构建技巧的人而言。该项目的描述提到它...
总的来说,"java项目开发案例大全"是一个全面且实用的学习资源,它将带你走进Java开发的世界,教你如何运用Java解决实际问题,提升你的编程技巧和项目管理能力。无论你是Java新手还是希望深化技能的开发者,这份资料...
"Java项目开发实例"是一个集合了多个实际案例的资源包,旨在帮助开发者通过真实的代码来学习和理解Java编程语言的应用。这个压缩包包含了丰富的源码,使得学习者可以深入研究每个项目的实现细节,提升自己的编程技能...
JAVA语言博大精深,编java程序需要技巧,尤其是SSH2架构的项目,需要高超的编程艺术和深广的智慧。编程和调试需要全面考虑问题,要从系统的各个方面进行考虑,多角度分析问题,这样才能快速解决问题。这里给出一些...
在提供的"20个Java开源项目源码下载"压缩包中,包含了多个知名的Java项目,这些项目可以帮助开发者深入理解Java编程、软件架构以及特定领域的最佳实践。以下是这些项目的简要介绍: 1. **ExoPlayer-r2.18.5.zip**:...
java项目之8优技巧网源码java项目之8优技巧网源码java项目之8优技巧网源码java项目之8优技巧网源码java项目之8优技巧网源码java项目之8优技巧网源码java项目之8优技巧网源码java项目之8优技巧网源码java项目之8优...
【标题】:“经典Java项目源代码” 【描述】:这些源代码是清华大学的老师们通过长期研究和实践积累的宝贵资源,共包含10个不同类型的Java项目。这些项目旨在全面展示Java编程语言以及与数据库交互的多种技术。通过...
【Java项目案例下载】是一个非常有价值的资源集合,它包含了丰富的Java编程实践,是学习和提升Java技术的重要途径。在这个压缩包中,你将找到一系列的Java项目实例,这些实例覆盖了Java开发的多个方面,包括但不限于...
"java经典项目源码百度云.zip"这个压缩包显然包含了一系列与Java相关的经典项目源码,这对于初学者和有经验的开发者来说都是极其宝贵的资源。下面,我们将深入探讨这些标签所涵盖的知识点,并结合可能包含的文件...
《JAVA项目实例源码》是Java编程领域中的一个重要资源,对于学习和理解Java技术、提升实际开发能力具有极大的帮助。这个压缩包包含了多个Java项目的源代码,为学习者提供了宝贵的实践经验。通过研究这些实例源码,...
《Java编程技巧典型案例解析》一书聚焦于这些关键技巧,通过24个精心挑选的源代码案例,深入浅出地展示了Java编程中的精华所在。以下是根据标题、描述以及压缩包子文件的文件名称列表,提炼出的一些核心Java编程知识...
【标题】"手工完成java项目(一)——J2SE项目"揭示了这个压缩包文件是关于使用Java标准版(J2SE)进行项目开发的教程。在Java领域,J2SE代表Java 2 Platform, Standard Edition,它是Java平台的核心,主要用于桌面...
通过这个"java项目集合(强)",你可以深入研究不同项目中的实现细节,学习如何将理论知识应用于实际项目,提升编程技巧,理解软件工程的最佳实践。每个项目都可能是一个新的学习机会,无论你是想提升Java技能,还是...
通过对"java项目源码(3)"中的源文件进行分析,我们可以学习到如何组织代码、如何设计良好的类结构、如何处理输入输出、如何使用数据库连接、以及如何进行单元测试和集成测试等实际开发技巧。此外,源码还可能包含了...
《Java项目开发实例自学手册》是一本专门为Java编程初学者设计的自学教材,它涵盖了从基础到进阶的Java项目开发全过程。通过本书,学习者可以深入理解Java语言的特性和应用,掌握实际项目开发中的关键技能。 在Java...