Spring MVC如何防止重复提交?类似Struts Token机制!

转载 2011年01月24日 11:17:00

首先,需要将继承了SimpleFormController之类的sessionForm设为true。这样,在显示一个新表单时,Spring会将command存放在session中,而在提交表单时,Spring会从session中取出此command,随后立即从session中删除存放command的attribute。如果发现在session中没有command,Spring将其断定为重复提交,转而执行handleInvalidSubmit(request, response),可覆盖此方法负责防止重复提交的任务。可以这么说,当setSessionForm(true)之后,如果没有先后经历显示表单、提交表单的过程,就会被认为是重复提交表单。而有一些情况下却必须重复提交表单,如,修改数据库的数据后,试图写入数据库时因某些异常失败,如果此时异常被当前页面捕获并依旧返回当前页面,由于command已经被Spring在后台从session中移走,因此,就被认为是无效重复提交,从而导致第二次经修改后的记录无法正确提交到数据库中。handleInvalidSubmit()必须考虑到这种情况。

-------------------------------------------------------------------------------------------------

方法2

楼上提供的方法比较麻烦。
我在项目中使用过一种比较简单的方法,就是使用一个Filter,设置request的参数,使禁止Browser对页面进行缓存,通过这种变通的方式来解决。

SpringMVC token 防止表单重复提交,加上注释,帮助理解

package com.framework.plugin.token; import java.lang.annotation.Retention; import java.lang.annota...
  • a5601564
  • a5601564
  • 2016年09月10日 14:34
  • 2456

html+springMVC的拦截器token配置--解决ajax表单重复提交的问题

//定义注解类 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java....
  • qq_35021577
  • qq_35021577
  • 2017年07月25日 16:13
  • 448

Struts的Token(令牌)机制解决表单重复提交的问题

Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求...
  • debugingstudy
  • debugingstudy
  • 2013年08月24日 00:04
  • 1484

使用Struts的Token机制解决表单的重复提交

Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求...
  • update_java
  • update_java
  • 2015年09月23日 15:08
  • 1024

SpringMVC token 防止表单重复提交

一、定义注解 Token.java @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface ...
  • jxq0816
  • jxq0816
  • 2016年01月20日 18:23
  • 7255

spring mvc 防止重复提交表单的两种方法,推荐第二种

好的,下面来讲一下如何在Spring MVC里面解决此问题(其它框架也一样,逻辑一样,思想一样,和具体框架没什么关系)。要解决重复提交,有很多办法,比如说在提交完成后redirect一下,也可以用本文...
  • u013378306
  • u013378306
  • 2016年10月27日 12:56
  • 15154

防重复提交专题系列3-3:springmvc下的基于token的防重复提交

前言         今天发了三篇博客,咋一看这三篇博客毫无联系,网上很多博客也多是将这三篇博客作为三篇不同的主题发表。如果你不将这三篇博客联系起来看,就不能很透彻的防重复提交这个知识点,也不能学完整...
  • wabiaozia
  • wabiaozia
  • 2016年07月29日 15:05
  • 1584

Session Token机制-Struts2中防止表单重复提交的两种方式(一)

当用户填写完表单后,在提交过一次后,若用户做如下操作比如再次点击提交、刷新页面、提交页面呈现后点击后退按钮,都会导致表单重复提交。如果信息需要存储到后台数据库中,重复提交就会再次向数据库中插入用户信息...
  • snow_7
  • snow_7
  • 2016年05月24日 20:32
  • 2059

springmvc下的基于token的防重复提交

问题描述: 现在的
  • mylovepan
  • mylovepan
  • 2014年08月28日 12:53
  • 55888

Sping MVC Token防止表单重复提交

现在的网站在注册提交步骤中,由于后台要处理大量信息,造成响应变慢,在前端页面提交信息之前,等待后端响应,此时如果用户 再点一次提交按钮,后台会保存多份用户信息。为解决此问题,借鉴了struts2的t...
  • done58
  • done58
  • 2016年04月24日 21:30
  • 2299
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring MVC如何防止重复提交?类似Struts Token机制!
举报原因:
原因补充:

(最多只允许输入30个字)