关闭

限制页面请求在一定时间内的访问次数

标签: 一定时间内限制请求次数
158人阅读 评论(0) 收藏 举报
分类:
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;
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1359次
    • 积分:77
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:4篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论