<!-- 过滤IP -->
<filter>
<filter-name>IPFilter</filter-name>
<filter-class>com.filter.IPFilter</filter-class>
<init-param>
<param-name>IPList</param-name>
<param-value>127.0.0.10,192.1.0.11</param-value>
</init-param>
<init-param>
<param-name>ForbidPath</param-name>
<param-value>/domeTest2</param-value>
</init-param>
</filter>
<!-- 配置过滤器的映射路径 -->
<filter-mapping>
<filter-name>IPFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--End 过滤IP -->
package com.filter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class IPFilter implements Filter{
private static List<String> ipList = new ArrayList<String>();
private static String forbidPath = "";//设置权限的路径
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("Init~~~~~~~~~");
String ips = config.getInitParameter("IPList");
System.out.println("通行IP"+ips);
String[] ipArray = ips.split(",");
if(ipArray != null){
for(int i = 0; i < ipArray.length; i++){
ipList.add(ipArray[i]);
}
}
forbidPath = config.getInitParameter("ForbidPath");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("DoFilter~~~~~~~~~");
HttpServletRequest httpRequest = (HttpServletRequest)request;
String uri = httpRequest.getRequestURI();
if(uri.startsWith(forbidPath)){
String ip = httpRequest.getRemoteAddr();
System.out.println("来访IP:"+ip);
if(this.ipList.indexOf(ip) == -1){
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("这个IP:【"+ip+"】无访问权限");
out.flush();
out.close();
return;
}
}
}
@Override
public void destroy() {
System.out.println("Destroy~~~~~~~~");
}
}