注册
 找回密码
 注册
江西广告网
查看: 287|回复: 0
打印 上一主题 下一主题

用Filter实现IP过滤

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2008-12-30 11:15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
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 */ } }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表