限制页面请求在一定时间内的访问次数
2015-07-10 09:42
357 查看
public class SiteController extends AbstractController {
private WMPersonAttributeDao wmPersonAttributeDao;
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
String ip=request.getRemoteAddr();//获得请求ip
String sites;
Reminder reminder=new Reminder(request.getSession(),ip);
boolean flag= reminder.removeSession(60);//60秒清零一次对同一ip访问次数的统计
if(!flag){
sites="moreTimes";
}else{
String username=request.getParameter("username");
sites = wmPersonAttributeDao.getSitesByName(username);
}
response.getWriter().print(sites);
return null;
}
public WMPersonAttributeDao getWmPersonAttributeDao() {
return wmPersonAttributeDao;
}
public void setWmPersonAttributeDao(WMPersonAttributeDao wmPersonAttributeDao) {
this.wmPersonAttributeDao = wmPersonAttributeDao;
}
}
//第二个类
/**
* 定时清除session中同一ip访问次数
*/
public class Reminder {
private HttpSession session;
private String ip;
public Reminder(){}
public Reminder(HttpSession session,String ip) {
this.session=session;
this.ip=ip;
}
public boolean removeSession(int seconds){
Integer index0=(Integer)session.getAttribute(ip);//获得当前请求ip对应的访问次数
int count=0;
if(index0==null){
Runnable runnable=new Runnable() {
@Override
public void run() {
session.removeAttribute(ip);
}
};
ScheduledExecutorService scheduledExecutorService= Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.schedule(runnable,seconds,TimeUnit.SECONDS);
count=0;
}else{
count=index0;
}
session.setAttribute(ip,count+1);//记录相同ip访问次数
if(count>4)//每分钟5次{
{
return false;
}
else
return true;
}
}
private WMPersonAttributeDao wmPersonAttributeDao;
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
String ip=request.getRemoteAddr();//获得请求ip
String sites;
Reminder reminder=new Reminder(request.getSession(),ip);
boolean flag= reminder.removeSession(60);//60秒清零一次对同一ip访问次数的统计
if(!flag){
sites="moreTimes";
}else{
String username=request.getParameter("username");
sites = wmPersonAttributeDao.getSitesByName(username);
}
response.getWriter().print(sites);
return null;
}
public WMPersonAttributeDao getWmPersonAttributeDao() {
return wmPersonAttributeDao;
}
public void setWmPersonAttributeDao(WMPersonAttributeDao wmPersonAttributeDao) {
this.wmPersonAttributeDao = wmPersonAttributeDao;
}
}
//第二个类
/**
* 定时清除session中同一ip访问次数
*/
public class Reminder {
private HttpSession session;
private String ip;
public Reminder(){}
public Reminder(HttpSession session,String ip) {
this.session=session;
this.ip=ip;
}
public boolean removeSession(int seconds){
Integer index0=(Integer)session.getAttribute(ip);//获得当前请求ip对应的访问次数
int count=0;
if(index0==null){
Runnable runnable=new Runnable() {
@Override
public void run() {
session.removeAttribute(ip);
}
};
ScheduledExecutorService scheduledExecutorService= Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.schedule(runnable,seconds,TimeUnit.SECONDS);
count=0;
}else{
count=index0;
}
session.setAttribute(ip,count+1);//记录相同ip访问次数
if(count>4)//每分钟5次{
{
return false;
}
else
return true;
}
}
相关文章推荐
- 每天进步一点点——linux——sed
- NYOJ 70-阶乘因式分解(二)
- jdk阅读xml文件
- NSUserDefaults用法(轻量级本地数据存储)
- echarts 版本区分导致的错误
- Oracle to_char格式化函数 显示毫秒
- IOS基础:IOS及ObjectC基础知识
- 互联网名词解释
- java web 拦截器与过滤器区别
- 2015.7.10js-07(简单时间)
- 【Python】python环境的搭建之windows篇
- 十大游戏开发引擎
- 安卓开发规范
- ssh关于hibernate的几点问题
- 关于maven版本问题
- PHP_SELF、 SCRIPT_NAME、 REQUEST_URI区别
- malloc ,realloc,calloc区分
- [Objective-C] Protocol 简介
- Foundation
- “黑马程序员” java成员变量和局部变量