1.meta方法将此代码添加到表单页的标题区域:<metahttpequiv=“pragma”content=“nocache”><metahttpequiv=“cachecontrol”content=“nocache,mustvalidate”><metahttpequiv=“expires”content=“wed,feb199708:21:57gmt”>
2。token方法生成一个令牌并将其存储在用户会话中。表单中会添加一个隐藏字段以显示标记的值。提交表单后,将生成一个新令牌。将用户提交的令牌与会话中的令牌进行比较。如果不同,则会重复提交。
3.禁用按钮方法<inputtype=“button”value=“submit”onclick=”this.disabled=truethis.表单提交()“>
提示是因为它在post模式和get模式下是带有重定向的提示,相当于浏览器地址跳转。struts2有令牌标签以防止重复提交。如果您想在提交后刷新,在post模式成功提交和处理后没有提示,它将被重新定向到一个成功的页面。这样,刷新页面也是成功的
1。使用js在单击一次后禁用按钮。使用该方法可以防止多次点击的发生,实现方法简单。缺点是,如果客户端禁止javascript脚本,它将是无效的。
2.提交成功后执行页面重定向。转到提交成功信息页。特点:避免f5重复提交,并消除了同样的问题所造成的浏览器前进和后退按钮。
3.表单的隐藏字段存储会话(请求表单时生成的标记)。使用此方法,在接收到表单数据后,检查标志值是否存在,首先删除标志值,然后对数据进行处理。如果数据不存在,则表示已提交,此提交将被忽略。
4.数据库唯一索引约束(防止重复数据的最有效方法)。
5.使用验证码响应.写入
“无姓名或重复提交”是由于用户未填写姓名,或表单重复提交(标志为session(“antry”)为空)其他响应。写入
teststrsession(“antry”)=“”“提交成功,清空session(“antry”)以防止重复服从
结束如果%i不知道它是否有用/a:它可以用javascript实现。
添加后,执行重定向,以便刷新不会重复
但这是临时解决方案,而不是永久解决方案。
对于根本原因,请使用令牌将id放入表单中,并将其与会话中的id进行比较。只有当它是相同的,它才能被处理。提交一次后,会话中的id将被删除。
1.提交后返回false。增加条件判断,提交前为真,提交后为假,根据情况重新赋值为真