java 获得访问者ip
来源:互联网 发布:zte中兴网络机顶盒 编辑:程序博客网 时间:2024/05/11 06:06
import javax.servlet.http.HttpServletRequest;import org.apache.commons.lang.StringUtils;public class GetIpUtils { /** * 获取访问者IP * * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。 * * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割), * 如果还不存在则调用Request .getRemoteAddr()。 * * @param request * @return */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("X-Real-IP"); if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) { return ip; } ip = request.getHeader("X-Forwarded-For"); if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) { // 多次反向代理后会有多个IP值,第一个为真实IP。 int index = ip.indexOf(','); if (index != -1) { return ip.substring(0, index); } else { return ip; } } else { return request.getRemoteAddr(); } } /** * * 将IP地址转化成整数的方法如下: * * 1、通过String的indexOf方法找出IP字符串中的点"."的位置。 * * 2、根据点的位置,使用String的substring方法把IP字符串分成4段。 * * 3、使用Long的parseLong方法把子段转化成一个3位整数。 * * 4、通过左移位操作(<<)给每一段的数字加权,第一段的权为2的24次方,第二段的权为2的16次方,第三段的权为2的8次方,最后一段的权为1 * * @param String strIp * @return */ public static long ipToLong(String strIp){ long[] ip = new long[4]; //先找到IP地址字符串中.的位置 int position1 = strIp.indexOf("."); int position2 = strIp.indexOf(".", position1 + 1); int position3 = strIp.indexOf(".", position2 + 1); //将每个.之间的字符串转换成整型 ip[0] = Long.parseLong(strIp.substring(0, position1)); ip[1] = Long.parseLong(strIp.substring(position1+1, position2)); ip[2] = Long.parseLong(strIp.substring(position2+1, position3)); ip[3] = Long.parseLong(strIp.substring(position3+1)); return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3]; } /** * 比较IP是否在IP区间内 * * @param long ip, long begin, long end * @return */ public static boolean isInner(long ip, long begin, long end) { return ip >= begin && ip <= end; }}
0 0
- java 获得访问者ip
- 获得访问者的ip
- 统计JAVA网站访问次数并获得访问者IP
- php 获得访问者的ip
- javaweb获得访问者ip地址
- java获取访问者的IP
- java开发_获取访问者IP
- Java获取访问者的ip地址
- java获取访问者的IP和端口
- java获取访问者主机名和IP地址
- JAVA 获得IP地址
- java获得ip地址
- java 获得客户端ip
- 用Java获得IP地址
- 用Java获得IP地址
- 用Java获得IP地址
- java获得代理真实IP
- JAVA获得本机IP
- javascript练习1
- SVM多分类器的实现(Opencv3,C++)
- java设计模式之建造者模式
- >> 算数右移和>>>逻辑右移
- 微信分享示例代码
- java 获得访问者ip
- FMDB使用
- FastDFS安装
- 【Android 开发】 : Activity之间传递数据的几种方式
- sys_refcursor 和 cursor 优缺点比较
- Spring 整合 Redis
- VS中关于预编译头文件的介绍
- Java中十进制,二进制,十六进制的相互转换总结
- 简易select二级联动