doPost中的JavaServlet同步doGet

doPost中的JavaServlet同步doGet,java,email,servlets,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); mai

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

首先,我从
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()之后开始侦听获取请求。这意味着要在那里冻结脚本的执行

我想这样做:

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

有什么建议吗?

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

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


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

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

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


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

您的问题不清楚。您想在同一个servlet中协调
doGet
doPost
的执行(不要说synchronize,这意味着其他内容)?对不起。我想在
doPost
中制作一个
doGet
监听器。冻结
doPost
,直到收到新的GET查询。说清楚点,我很乐意提供任何其他解决方案。@Vossen如果你这样做,你所有的用户都会发疯。请相信我:你可能想读一点关于容器(如Tomcat)和servlet一起工作——接受请求不是servlet所做的事情,它只是在收到请求时被容器调用。@ FVU,TY,我会考虑。你的问题还不清楚。您想在同一个servlet中协调
doGet
doPost
的执行(不要说synchronize,这意味着其他内容)?对不起。我想在
doPost
中制作一个
doGet
监听器。冻结
doPost
,直到收到新的GET查询。说清楚点,我很乐意提供任何其他解决方案。@Vossen如果你这样做,你所有的用户都会发疯。请相信我:你可能想读一点关于容器(如Tomcat)和servlet一起工作——接受请求不是servlet所做的,它只是在收到请求时被容器调用。@ FVU,TY,我会考虑它。