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

Avoid multiple form submits while server is busy in struts2 based application

这是场景(抱歉,这将是理论问题)。

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

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

因此,这是我在处理请求时面临的问题,考虑到 很少有用户不耐烦,可能会一次又一次地单击提交按钮 在这种情况下,我不必要地增加了负载。我想阻止所有其他重复请求。

那么我应该如何处理这种情况?

听说过拦截器token和tokenSession

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

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

http://www.journaldev.com/2281/struts2-token-interceptor-to-handle-double-form-submission-problem

[编辑] :
用户登录后的表单应该有一个令牌值,该值应该在每次刷新页面时更改,并且应该在服务器端验证其服务器是否为该特定用户生成了有效令牌,或者是否应该存在正确的验证码实现。这是为了避免我们从外部网站提交表单。希望你明白。

您可以做几件事:客户端 脚本在单击后禁用提交按钮并实施 Execute and wait interceptor,这对 运行 非常有用在向用户显示一个漂亮的进度表的同时,在后台进行长时间的操作。