怎么避免同一用户向同一个地址同时发送多个请求?

浪子燕青 2014-03-29 04:38:14
求大神帮忙
问题:
同一个用户向同一个地址同时或者同一秒发送多个请求,并且成功,怎么避免这样的情况,例如:

for(i=0;i<1000;i++){
//请求地址url
http://abc.com/addTimes.action;
}

public String addTimes(){
//先判断用户是否get请求
String method = request.getMethod();
String method = request.getMethod();
if("GET".equals(method.toUpperCase())){
try {
response.sendRedirect("......");//直接跳走
} catch (IOException e) {
e.printStackTrace();
}
} else{
//先判断用户是否登录,获取手机号
String mobile=.....
//如果登录,就根据手机号查询用户记录当天是否已经添加过次数
boolean isAddTimes = ...
if(!isAddTimes){
//执行添加次数的方法
addTimes(mobile);
}
//如果未登录不处理
}
}

如果用户登录,也就是说能获取到手机号,用户同一秒多次请求这个地址,并能成功插入次数多次,
用户故意卡的网速很慢,请大神帮忙看看,怎么解决这个问题?

不胜感激。。。。。。。。。。
...全文
990 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
浪子燕青 2014-03-31
  • 打赏
  • 举报
回复
第一次请求还没有完成,第二次请求就已经发生了,同一秒钟,所以,还没取出时间戳,第二次请求就已经快完了,所以,时间戳好像不行 ,服务器端都做的判断的,所以只有多次请求同时或者同一秒请求地址,没法控制,只要超过一秒或者几百毫秒,多次请求就没法成功了,所以还是不太行
浪子燕青 2014-03-31
  • 打赏
  • 举报
回复
可以理解为重复提交,方法里面很多的逻辑,只要第一次提交返回结果后是可以提交第二次的,但是如果没有返回结果,就已经提交第二次第三次,有可能就有问题了,就不太好限制次数了, 同一用户同一秒钟向同一地址发送多次请求,里面的很多判断是失效的,前台页面好控制,就是怕用户模拟发送post请求,直接请求地址,同一秒会记录多次相同的信息
翘班党 2014-03-31
  • 打赏
  • 举报
回复
你意思是防止二重提交吗?
soyestrellafortuna 2014-03-31
  • 打赏
  • 举报
回复
那就请求地址+时间一起判断
不是太高的手 2014-03-30
  • 打赏
  • 举报
回复
引用 1 楼 soyestrellafortuna 的回复:
试试加时间戳呢?每次申请都生成一个时间戳,比对两次的时间差,超过xxx分钟才能再次提交
恩 加个表示字段 就ok了
疯狂熊猫人 2014-03-30
  • 打赏
  • 举报
回复
1、第一次请求的时候自然time为null,无需进行比较,直接进行业务处理,然后向session中添加属性time,值设置为本次请求到达的时间。 2、第二次请求到达,用当前时间的毫秒与time进行比较,根据比较结果进行你的业务逻辑处理了。
puel1 2014-03-29
  • 打赏
  • 举报
回复
通过UUID,相当于给每一次请求分配一个唯一的ID号。可以了解一下UUID这个类
卡卡吉利 2014-03-29
  • 打赏
  • 举报
回复
看需求吧,如果只是防止用户连续点击,在前端控制一下就好了
soyestrellafortuna 2014-03-29
  • 打赏
  • 举报
回复
试试加时间戳呢?每次申请都生成一个时间戳,比对两次的时间差,超过xxx分钟才能再次提交

81,114

社区成员

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

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