如何避免表单重复提交

表单的重复提交问题虽然比较好解决,但却不容忽视,忽视重复提交可能给系统带来一系列的问题,首先相同的内容提交多遍,用户感知肯定不好,其次重复提交造成不必要的服务器压力,另外还会在数据库中产生很多冗余的数据。

避免表单的重复提交方法,根据功能的重要程度及数据的重要程度,可以依次添加前端js校验和服务器端校验。

Js校验主要有两种方法,一是添加标志位,可以在jsp中添加标志也可以直接在js中用一个变量表示是否已经提交,提交后标志位值或变量改变,在提交前直接判断标志位或变量的值是否是未提交的内容;二是在提交后让提交按钮失效。

很多时候由于用户安装的浏览器版本问题或者js的加载问题会使js校验失效,对于较重要的数据,保险起见,需要添加服务器端的校验。

服务器端校验也有多种方式。一是添加token拦截器,在webwork或struts中都有默认的token拦截器,打开页面时会在服务器端和客户端保存同一个随机码,页面提交时若随机码相同则可以提交到action处理,否则会被拦截,正常提交后服务器端的随机码会发生改变,页面第二次提交过来,就会被拦截了。添加token的方法比较方便,但也存在弊端,如果提交的内容需要在服务器端判断是否可用等情况,不可用再返回页面进行处理后再提交的情况,就不可用了,因为第一次进入action的时候,服务器端的随机码改变,再提交的时候就不能通过服务器端的校验了,这种情况下,服务器端的校验就必须在业务处理中完成了,按一般的业务处理思路,获取数据库中的内容,判断是否重复,重复的话返回提示语到页面,这种方式比较麻烦,另外需要多和数据库交互。

以上是本人对表单重复提交问题处理的一点总结,部分观点可能有不合理的地方,欢迎大家指正。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值