利用Filter实现IP过滤

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

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

*/

}

}

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航