1.编写一个过滤器:
package com.solian.web.filter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.solian.web.util.Ipsettings;
/**
* 自定义过滤器,用来判断IP访问次数是否超限
* 如果前台用户访问网站的频率过快(达到超过50次/秒),则判定该ip恶意刷新操作,
* 限制该IP的访问,1小时后自己解除限制
*
* @author wukaikai
*
*/
@WebFilter(urlPatterns="/*")
public class IpFilter implements Filter{
/**
* 默认限制时间(单位:ms)
*/
private static final long LIMITED_TIME_MILLIS = 60 * 60 * 1000;
/**
* 用户连续访问最高阀值,超过该值则认定为恶意操作的IP,进行限制
*/
private static final int LIMIT_NUMBER = 50;
/**
* 用户访问最小安全时间,在该时间内如果访问次数大于阀值,则记录为恶意IP,否则视为正常访问
*/
private static final int MIN_SAFE_TIME = 5000;
private FilterConfig config;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.config = filterConfig; //设置属性filterConfig
}
/* (non-Javadoc)
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
@SuppressWarnings(