现在有个需求,就是有个查询非常消耗资源,无论任何用户登陆上来15分钟内只允许查询1次,想问问这个有什么好的实现方法,最好带上代码。
[b]问题补充:[/b]
补充一下,这个查询有个select的条件,限制每一个条件的查询是15分钟,不互相影响。
除了session以外还有没有什么其他的方法,在session里不是很安全,我们用的是S2SH框架。
可以放数据库
在查询方法的类中定义一个属性,存储一个时间
当第一个人执行查询方法,就更新这个时间,
然后每个人查询的时候看系统时间和这个时间是否相差15分钟,是则执行查询,否则返回
客户端写个定时器,让查询按钮在查询后15分钟内灰掉就OK了. :D
在session中存储最近一次查询的时间,在每次查询前比较session中存储的时间和当时系统时间差,如果小于15min就拒绝进行查询。
Date lastDate = (Date) session.getAttribute("time");
if (lastDate == null || (1000 * 60 * 15) < (new Date().getTime() - lastData.getTime())) {
//进行查询
session.setAttribute("time", new Date());
} else {
return;
}
那就只有在数据库中记录下上次查询的时间,和查询的用户,没次在进行复杂查询前进先进行一次时间查询。。。。