【JavaWeb】jsp页面中表单重复提交的三种情况

情况一

如通过regist.jsp页面提交用户名和密码申请注册,若注册成功,则将用户数据保存到数据库,并通过请求转发跳转到success.jsp页面。

此时在跳转后按F5刷新当前页面,则数据库会多次添加重复记录。原因是因为请求转发其本质是一次请求,而F5会导致浏览器重复提交最后一次请求,即向Servlet请求注册。

情况二

用户正常提交表单,但由于网络原因迟迟没有收到响应,因此用户多次点击提交。

情况三

用户正常提交表单,服务器正常响应,但是提交完成后,用户回退浏览器重新提交。

解决方案

对于情况一来说,通过在Servlet程序中将请求转发改为请求重定向即可解决。

对于情况二、情况三来说,通过验证码解决。服务端的jsp页面会随机生成一个验证码,并将其保存在Session域中。第一次提交表单时Servlet程序会取出验证码与发来的请求作比较并删除,此时验证码相同,允许操作。后来提交表单会因为服务端的验证码变成了null,而导致验证码与请求中的验证码不一致,使得操作被阻止。

Kaptcha

可以通过谷歌Kaptcha完成验证码功能,下载链接在文章末尾。

使用步骤:

1.导入jar包;

2.在web.xml配置用于生成验证码的Servlet程序,注意这个Servlet程序在jar包中已经写好了;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The Gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值