WEB开发网
开发学院WEB开发Jsp 用Filter实现IP过滤 阅读

用Filter实现IP过滤

 2008-01-05 08:40:20 来源:WEB开发网   
核心提示:import java.io.IOException;import java.util.StringTokenizer;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;impor
import java.io.IOException;
import java.util.StringTokenizer;
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.HttpServletResponse;
public class ipFilter implements Filter {
  PRivate FilterConfig config;
  public final static String IP_RANGE = "192.168";
  public IPFilter() {
  }
  public void init(FilterConfig filterConfig) throws ServletException {
    this.config = filterConfig;
  }
  public void doFilter(ServletRequest request, ServletResponse response,
      FilterChain chain) throws IOException, ServletException {
    String ip = request.getRemoteAddr();
    HttpServletResponse httpResp = null;
    if (response instanceof HttpServletResponse)
      httpResp = (HttpServletResponse) response;
    StringTokenizer toke = new StringTokenizer(ip, ".");
    int dots = 0;
    String byte1 = "";
    String byte2 = "";
    String client = "";
    while (toke.hasMoreTokens()) {
      ++dots;
      //if we've reached the second dot, break and check out the indx
      // value
      if (dots == 1) {
        byte1 = toke.nextToken();
      } else {
        byte2 = toke.nextToken();
        break;
      }
    }//while
    //Piece together half of the client IP address so it can be compared
    // with
    //the forbidden range represented by IPFilter.IP_RANGE
    client = byte1 + "." + byte2;
    if (IP_RANGE.equals(client)) {
      httpResp.sendError(HttpServletResponse.SC_FORBIDDEN,
          "That means goodbye forever!");
    } else {
      chain.doFilter(request, response);
    }
  }// doFilter
  public void destroy() {
    /*
     * called before the Filter instance is removed from service by the web
     * container
     */
  }
} 

Tags:Filter 实现 IP

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接