<!-- 过滤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~~~~~~~~"); } }