站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题用Filter实现IP过滤

用Filter实现IP过滤

摘要: 用Filter实现IP过滤

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="179" height="86" align="center" valign="top"> </td> <td width="505" valign="top">
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

     */

  }

} 
</td> </tr> </table> </td> </tr> <tr>


↑返回目录
前一篇: Java2,v5.0新特性实例
后一篇: 全排列的一种递归算法