Java 在基于struts2的应用程序中,避免在服务器繁忙时提交多个表单

Java 在基于struts2的应用程序中,避免在服务器繁忙时提交多个表单,java,struts2,duplicates,Java,Struts2,Duplicates,下面是一个场景(对不起,这将是一个理论问题) 我正在开发一个电子商务web应用程序struts2,在正常情况下,可以处理5000-6000个用户,但在少数情况下,的用户数可能会超过600k 我有一个由超过25个字段组成的web表单。当服务器负载过重时,我几乎没有图像和文档的上载字段。表单需要5分钟以上才能得到响应 这是我在处理请求时面临的一个问题,考虑到“强”很少有用户不耐烦,可以一次又一次地点击提交按钮< /强>在这种情况下,我不必要地增加负载。我想阻止所有其他重复请求 那么我应该如何应对这种

下面是一个场景(对不起,这将是一个理论问题)

我正在开发一个电子商务web应用程序struts2,在正常情况下,可以处理5000-6000个用户,但在少数情况下,的用户数可能会超过600k

我有一个由超过25个字段组成的web表单。当服务器负载过重时,我几乎没有图像和文档的上载字段。表单需要5分钟以上才能得到响应

这是我在处理请求时面临的一个问题,考虑到“强”很少有用户不耐烦,可以一次又一次地点击提交按钮< /强>在这种情况下,我不必要地增加负载。我想阻止所有其他重复请求

那么我应该如何应对这种情况呢?

我听说过拦截器令牌和令牌会话

<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="tokenSession"></interceptor-ref>

但我猜这些拦截器只处理基于刷新和后退按钮的重复表单提交问题。事实上,我已经尝试了下面链接中提到的实现

[编辑]:

用户登录后的表单应具有令牌值,该值应随页面的每次刷新而更改,并且应在服务器端验证其是否为该特定用户生成了有效令牌,或者是否存在正确的captcha实现。这是为了避免我们从外部网站提交表格。希望您理解。

您可以做几件事:客户端脚本在单击后禁用submit按钮并实现,这非常适合在后台运行长期操作,同时向用户显示一个漂亮的进度表

您发布的链接中的实现对您不起作用,您是否尝试限制进入应用程序的用户数?请检查执行并等待拦截器:。您想要的是。您对“刷新/返回”按钮的假设是错误的,它也适用于双重提交。从文档中:
例如,您可以使用它来防止粗心的用户双击在线商店的“结帐”按钮
。如果答案有帮助的话,请随意投票。那就错了。你不应该禁用一个按钮,用户可能会认为他们的浏览器有问题或者代码有缺陷。相反,您可以应用动画来显示按钮处于按下状态或释放状态时的状态,或者应用带有描述操作的消息的模式对话框