一、表单重复提交的三种常见的情况以及解决方法
情况1、提交完表单。服务器使用请求转发来进行页面跳转,这个时候,用户按下功能键F5,就会发起最后一次的请求,造成表单重复提交问题。
解决方法:使用重定向来进行跳转
情况2、用户正常提交服务器,到那时由于网络延迟等原因,迟迟未收到服务器的响应,用户以为提交失败,然后多点了几次提交操作,也会造成表单的重复提交。
情况3、用户正常提交服务器,服务器也没有延迟,但是提交完成后,用户回退浏览器,重新提交,也会造成表单重复提交。
解决方法:使用验证码
底层原理如下所示:
二、谷歌kaptcha图片验证码的使用
谷歌kaptcha图片验证码使用步骤如下:
步骤1、导入谷歌验证码的jar包
kaptcha-2.3.2.jar
步骤2、在web.xml中取配置用于验证码的Servlet程序
如下操作:
步骤3、在表单中使用img标签取显示验证码图片并使用它。
步骤4、在服务器获取谷歌生成的验证码和客户端发送过来的验证码比较使用。
KAPTCHA_SESSION_KEY存储着Session中的验证码
三、验证码的切换(绑定单击事件)
浏览器存在缓存,验证码点击刷新只会改变一次的情况
解决方法:在请求时,后面追加不同的值,就可以避免。
先给验证码加入id=“code_img”,以便绑定单击事件。