源代码下载地址:http://www.zuidaima.com/share/1550463687150592.htm
最近项目中有一处要实现获取客户端IP的功能,写了一个获取的方法,可以得到客户端的IP,但是获得服务器端的IP地址是127.0.0.1,最后改了下方法可以获得真实的客户端地址了,传上来大家有需要的可以看下
package com.zuidaima.util; /** * @Title: getIpAddr * @author kaka www.zuidaima.com * @Description: 获取客户端IP地址 * @param @return * @return String * @throws */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); if(ip.equals("127.0.0.1")){ //根据网卡取本机配置的IP InetAddress inet=null; try { inet = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } ip= inet.getHostAddress(); } } // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 if(ip != null && ip.length() > 15){ if(ip.indexOf(",")>0){ ip = ip.substring(0,ip.indexOf(",")); } } return ip; }