web页面传参数,防止重复插入数据的问题

小区保安 2014-12-12 11:14:00
业务故事: 在web页面注册一个用户, 用户名不可以重复, 当web页面 添加用户的时候, 在网络可能比较卡的情况下 ..用户快速提交两次..竟然能绕过我后台java代码的用户名重名校验...

我改怎么解决这个问题...
1,我想到的一个思路是 用户点击提交以后 按钮添加disable选项, 但是如果用户并发的时候, 这种情况依然存在
...全文
215 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahhmdwg 2014-12-15
  • 打赏
  • 举报
回复
1.不知道你是不是用的struts2框架,struts2里有专门设置表单重复提交 2.Struts2的token拦截器,很简单查一下用法就可以了 3.如果你不是用的struts2,使用js就能实现。
ysm1850 2014-12-12
  • 打赏
  • 举报
回复
了解一下 Token防止页面重复提交
咖啡加糖_ 2014-12-12
  • 打赏
  • 举报
回复
你说的应该不会有问题吧,也可以在字段上加唯一属性
Runner6587 2014-12-12
  • 打赏
  • 举报
回复
使用Session 注册表单 页面中生成一个唯一随机值, 将其保存到Session 中, 同时将其保存为表单的隐藏字段的值 在处理注册的请求时,获取Session 中值,获取请求参数的值,比较两者是否相同, 如果相同说明不是重复提交,请求通过同时删除session 中保存的值,(注意要删除) 如果不相同(也就是第一次提交时被删除了现在重复提交找不到了)则是重复提交, 不能通过.
姜小白- 2014-12-12
  • 打赏
  • 举报
回复
用户并发的时候,什么情况呢? 楼主是说同时多人提交时,依然能骗过java的重名校验? 可以使用ajax进行校验,用户输入用户名后,进行校验,不要等到提交的时候再去校验,这个不解决本质问题。 或者 并发不高的话,给校验方法上锁,依次获取锁再去校验。
snailjumpjump 2014-12-12
  • 打赏
  • 举报
回复
4楼说的token是一个很好的方式,其实还有另外一个简单的方式,增加一个遮罩层,当用户点击注册或提交之后,页面弹出一个遮罩层,后面的按钮就不能点击了,当处理完成的时候,遮罩层消失,类似这种效果:

这种样式的css跟js代码网上应该很多的,
或者,点击提交之后,将按钮禁用掉,等提交完成后台返回成功之后,再启用按钮

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧