我正在使用 Java(Servlet,JSP) 开发 Web 应用程序。
我有一个发送电子邮件的课程。
类看起来像:
public class EmailSender
{
String SendEmail(String from,Session session,String To,String CC, String BCC, String Subject,String Body)
{
//Actual code for sending emails
}
}
EmailSender
从另一个类调用类:
public class InvokeSender
{
public InvokeSender(String dbFileName)
{
//get emails from database for sending who has STATUS='NOTSENT'
//statements to get all required parameter to pass to SendEmail()
EmailSender sender = new EmailSender();
String msg = sender.SendEmail(fromEmail,session,To,CC,BCC,SUBJECT,BODY);
}
}
并InvokeSender
在用户单击按钮时从 servlet 调用。
当用户单击按钮时,调用 InvokeSender,它将电子邮件从数据库发送并形成它们,然后将这些参数传递给SendEmail()
类EmailSender
。
如果按钮被按下两次,我希望一次只InvokeSender
运行一个实例以避免相同的电子邮件发送两次。如何处理?multithreading
在这种情况下有用吗?
任何建议将不胜感激。
Update1 用户单击后我无法禁用该按钮。因为如果用户刷新页面,则默认情况下将启用该按钮。
Update2
第一个用户选择客户、模板等来发送电子邮件,然后将电子邮件参数存储在数据库中。InvokeSender
类获取所有要发送的电子邮件。无法预测要发送的电子邮件数量。它可以是 1 或 500 或更多。我只希望InvokeSender
运行一个实例,直到前一个实例完成发送电子邮件。功能(生成和发送电子邮件的按钮)将向 5-7 个用户公开。