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;
}
}