判断每个ip是否在以个指定的IP段内
Java代码 package com.tiansong.infosafetranflag.safe.www; import java.io.IOException; import java.util.Iterator; 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; import javax.servlet.http.HttpServletResponse; import com.tiansong.infosafetranflag.safe.system.entity.IPItem; import com.tiansong.infosafetranflag.safe.system.service.IPItemService; import com.tiansong.infosafetranflag.safe.system.service.ServiceFactory; import com.tiansong.infosafetranflag.safe.system.service.dao.DAOServiceFactory; public class RemoteHostFilter implements Filter { public RemoteHostFilter() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; // 取得本机的IP地址 //InetAddress localAddress = InetAddress.getLocalHost(); //String ipAddress = localAddress.getHostAddress(); String ipAddress = req.getRemoteHost(); System.out.println(ipAddress); long ip = getIpNum(ipAddress); ServiceFactory factory = new DAOServiceFactory(); try { IPItemService ipService = factory.createIPItemService(); // 从数据库中取出所有的IP段 List ipList = ipService.getAllIPItem(); if (ipList.size() > 0 && ipList != null) { for (Iterator it = ipList.iterator(); it.hasNext();) { IPItem item = (IPItem) it.next(); String startIp = item.getStartIp(); String endIp = item.getEndIp(); long start_ip = getIpNum(startIp); long end_ip = getIpNum(endIp); if (isInner(ip, start_ip, end_ip)) { if (item.getStatus().equals("1") || item.getStatus().equals("true")) { //System.out.println("你的IP已被屏蔽,请跟管理员联系!"); //resp.sendError(404); resp.sendRedirect(req.getContextPath() + "/NoSecurity.html"); return; } } } } } catch (Exception e) { } chain.doFilter(request, response); } public void destroy() { } public void init(FilterConfig filterConfig) { } /** * 分割IP * * @param ipAddress * @return */ private static long getIpNum(String ipAddress) { String[] ip = ipAddress.split("\\."); long a = Integer.parseInt(ip[0]); long b = Integer.parseInt(ip[1]); long c = Integer.parseInt(ip[2]); long d = Integer.parseInt(ip[3]); long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d; return ipNum; } /** * 判断客户端的IP是否在某个ip段中 * * @param clientIp * 客户端的IP * @param begin * 开始IP * @param end * 结束IP * @return */ private static boolean isInner(long clientIp, long begin, long end) { return (clientIp >= begin) && (clientIp <= end); } } package com.tiansong.infosafetranflag.safe.www; import java.io.IOException; import java.util.Iterator; 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; import javax.servlet.http.HttpServletResponse; import com.tiansong.infosafetranflag.safe.system.entity.IPItem; import com.tiansong.infosafetranflag.safe.system.service.IPItemService; import com.tiansong.infosafetranflag.safe.system.service.ServiceFactory; import com.tiansong.infosafetranflag.safe.system.service.dao.DAOServiceFactory; public class RemoteHostFilter implements Filter { public RemoteHostFilter() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; // 取得本机的IP地址 //InetAddress localAddress = InetAddress.getLocalHost(); //String ipAddress = localAddress.getHostAddress(); String ipAddress = req.getRemoteHost(); System.out.println(ipAddress); long ip = getIpNum(ipAddress); ServiceFactory factory = new DAOServiceFactory(); try { IPItemService ipService = factory.createIPItemService(); // 从数据库中取出所有的IP段 List ipList = ipService.getAllIPItem(); if (ipList.size() > 0 && ipList != null) { for (Iterator it = ipList.iterator(); it.hasNext();) { IPItem item = (IPItem) it.next(); String startIp = item.getStartIp(); String endIp = item.getEndIp(); long start_ip = getIpNum(startIp); long end_ip = getIpNum(endIp); if (isInner(ip, start_ip, end_ip)) { if (item.getStatus().equals("1") || item.getStatus().equals("true")) { //System.out.println("你的IP已被屏蔽,请跟管理员联系!"); //resp.sendError(404); resp.sendRedirect(req.getContextPath() + "/NoSecurity.html"); return; } } } } } catch (Exception e) { } chain.doFilter(request, response); } public void destroy() { } public void init(FilterConfig filterConfig) { } /** * 分割IP * * @param ipAddress * @return */ private static long getIpNum(String ipAddress) { String[] ip = ipAddress.split("\\."); long a = Integer.parseInt(ip[0]); long b = Integer.parseInt(ip[1]); long c = Integer.parseInt(ip[2]); long d = Integer.parseInt(ip[3]); long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d; return ipNum; } /** * 判断客户端的IP是否在某个ip段中 * * @param clientIp * 客户端的IP * @param begin * 开始IP * @param end * 结束IP * @return */ private static boolean isInner(long clientIp, long begin, long end) { return (clientIp >= begin) && (clientIp <= end); } } js判断是否是ip字符串 Js代码 function iptest(v){ var ip = /^([1-9][0-9]{0,1}|1[013-9][0-9]|12[0-689]|2[01][0-9]|22[0-3])([.]([1-9]{0,1}[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2}[.]([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-4])$/; return ip.test(v); } ?