[url=http://union.pconline.com.cn]活动[/url]规则很简单:前1000位成功注册并审核通过的网络联盟会员,帐户中将自动赠送20元的现金。
这回我要实现的功能是:
[list]
[*]将每天审核通过的会员的信息自动同步到活动管理后台数据库
[*]自动给每天审核通过的会员的账户增加20元,直至会员数为1000为止
[*]成功调整费用后,自动发送《注册送20元现金》确认邮件给会员
[*]后台提供查看已同步的注册会员信息、查看现金发送的情况以及邮件发送的情况等
[/list]具体实现细节如下:
1,请求getAffiliate.jsp接口,接收每天审核通过的会员信息(返回的是html文本)
4,通知adjustPayment.jsp接口调整费用,将现金加入(前1000位)会员账户
以上几个功能都无须人工参与,于是我定义了两个定时任务(同步数据和发邮件)让其自动执行。后来康哥说应用上传后,会自动同步到6台服务器上,然后各自运行,要求避免因各服务器时间不一致而重复执行定时任务。因为数据库是单点的,于是我加入了一个表标识任务的执行情况,每次任务执行前都通过访问标识而判断执行或忽略。
-----------------------------------------------------------------
这个应用最主要是用到访问远程URL的方法,实现如下:
这回我要实现的功能是:
[list]
[*]将每天审核通过的会员的信息自动同步到活动管理后台数据库
[*]自动给每天审核通过的会员的账户增加20元,直至会员数为1000为止
[*]成功调整费用后,自动发送《注册送20元现金》确认邮件给会员
[*]后台提供查看已同步的注册会员信息、查看现金发送的情况以及邮件发送的情况等
[/list]具体实现细节如下:
1,请求getAffiliate.jsp接口,接收每天审核通过的会员信息(返回的是html文本)
<script>
document.write('ID:101,姓名:aaaa1,E-mail:aaaa1@gmail.com<br>');
document.write('ID:102,姓名:bbbb2,E-mail:bbbb2@hotmail.com<br>');
document.write('ID:103,姓名:cccc3,E-mail:cccc3@163.com<br>');
</script>
2,(利用正则表达式)解析html文本,抽取出会员的信息(ID、姓名、E-mail)
Pattern pattern = Pattern
.compile("write\\('ID:(.*?),姓名:(.*?),E-mail:(.*?)<br>");
Matcher match = pattern.matcher(str);
while (match.find()) {// 循环解析所有会员信息(每行)
String id = match.group(1);// ID
String name = match.group(2);// 姓名
String email = match.group(3);// E-mail
…………
}
3,将解析后的会员数据按字段保存到活动管理后台数据库
4,通知adjustPayment.jsp接口调整费用,将现金加入(前1000位)会员账户
网站主ID :<input type="text" name="affiliateId" value=""><br>
调整类型ID:<input type="text" name="adjustType" value="10"><br>
调整数额 :<input type="text" name="adjustAmount" value="20"><br>
调整说明 :<input type="text" name="adjustDesc" value="注册就送20元活动"><br>
调整日期 :<input type="text" name="adjustDate" value=""><br>
调整操作人:<input type="text" name="createBy" value="system"><br>
5,成功调整费用后,自动发送《注册送20元现金》确认邮件给会员
以上几个功能都无须人工参与,于是我定义了两个定时任务(同步数据和发邮件)让其自动执行。后来康哥说应用上传后,会自动同步到6台服务器上,然后各自运行,要求避免因各服务器时间不一致而重复执行定时任务。因为数据库是单点的,于是我加入了一个表标识任务的执行情况,每次任务执行前都通过访问标识而判断执行或忽略。
-----------------------------------------------------------------
这个应用最主要是用到访问远程URL的方法,实现如下:
public static String sendPost(String url) {
String result = "";
HttpURLConnection httpConn = null;
try {
URL httpurl = new URL(url);
httpConn = (HttpURLConnection) httpurl.openConnection();
httpConn.setDoOutput(true);// 允许输出流,默认是false
httpConn.setUseCaches(false);
httpConn.setRequestMethod("POST");// 设置 URL 请求的方法
int responseCode = httpConn.getResponseCode();
if (responseCode == 200) {
BufferedReader in = new BufferedReader(new InputStreamReader(
httpConn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
in.close();
}
} catch (Exception e) {
System.out.println("没有结果!" + e);
} finally {
if (httpConn != null)
httpConn.disconnect();
}
return result;
}