在Spring中重复表单提交

Jav*_*avi 21 forms spring spring-mvc form-submit

什么是避免在Spring中重复表单提交的最佳方法.此框架是否提供了处理此问题的任何特殊功能(例如,作为Struts中的Synchronizer Token)?

Bal*_*usC 38

有多种方法可以避免双重提交,可以组合使用:

  1. disable单击后几毫秒使用JavaScript 按钮.这将避免多次提交是由不耐烦的用户在按钮上多次单击引起的.

  2. 提交后发送重定向,这称为Post-Redirect-Get(PRG)模式.这将避免多个提交是由用户在结果页面上按F5并忽略浏览器警告数据将被重新发送,或者通过浏览器后退/前进按钮来回导航并忽略相同的警告.

  3. 请求页面时生成唯一标记,并将其放入会话范围和表单的隐藏字段.在处理期间,检查令牌是否存在,然后立即从会话中删除它并继续处理.如果令牌不存在,则阻止处理.这将避免上述类型的问题.

在Spring中,您可以使用RedirectViewPRG模式的实现(如第2点所述).其他两点需要自己实现.


bha*_*ral 5

这个页面似乎回答了你的问题(对于令牌问题,我的意思是.这里没有涉及问题的javascript和重定向后部分):

http://explodingjava.blogspot.com/2009/03/spring-mvc-synchronizer-token.html