Java servlet在doPost中同步doGet

时间:2014-04-09 17:28:58

标签: java email servlets

我正在处理注册的电子邮件确认。

首先,我从doPost()创建随机值并将其作为激活链接发送到最终电子邮件:

int token = new Random().nextInt(999999-100000) + 100000;
sendMail mailAgent = new sendMail("Hello!", "Hello, Link: "+ request.getRequestURL().toString()+"?Sender="+nick+"&Token="+token);
mailAgent.to = "target@mail.com";
mailAgent.send();

...消息发送正常,但我必须得到这个值。

唯一的想法 - 如何开始在mailAgent.send()方法之后收听GET请求。它意味着冻结脚本在那里的执行。

我会做这样的事情:

mailAgent.send();
doGet(request,response); 
// Will fire right after call, but i want to listen requests from here

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

如果我理解正确,您希望在用户点击链接后注册该用户,该链接包含随机令牌,并通过电子邮件发送。用户可能会在发送邮件很长一段时间后点击此链接。您的服务器可能已重新启动,可能发生了很多事情。

因此,将随机令牌与用户ID一起存储在数据库中,然后通过邮件发送给用户。

当用户阅读邮件时,点击链接然后发送回令牌,检查他发送的令牌是否与存储在数据库中的令牌相同。如果是,则将用户标记为已注册。