import java.net.InetAddress; import java.net.UnknownHostException; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; /** * IP獲取工具類 * */ public abstract class IpUtil { /** 日誌 */ private static Logger log = Logger.getLogger(IpUtil.class); private static InetAddress localHost; static{ try { localHost = InetAddress.getLocalHost(); } catch (UnknownHostException e) { log.error(e); } } /** * 獲取IP地址 * * @param request * @return IP */ public static String getIpAddr(HttpServletRequest request) { if (request == null) { return "unknown"; } 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("X-Forwarded-For"); } 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.getHeader("X-Real-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } /** * @return 主機名稱 */ public static final String getHostName() { if(localHost!=null){ return localHost.getHostName(); } return "UnknownHostName"; } /** * @return 主機地址 */ public static final String getHostAddress(){ if(localHost!=null){ return localHost.getHostAddress(); } return "UnknownHostAddr"; } }