IP工具类v1.0

package com.jadyer.util;

import java.util.Enumeration;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;

/**
 * IP工具类   
 * @author  http://blog.csdn.net/jadyer
 * @version v1.0
 * @created Dec 27, 2011 5:06:45 PM
 * @editime Dec 27, 2011 5:06:45 PM
 */
public class IPUtil extends HttpServlet {
	/**
	 * 获取客户端真实IP
	 */
	public static String getClientRealIP(HttpServletRequest request) {
		String IP = request.getHeader("x-forwarded-for");
		if (null == IP || 0 == IP.length() || "unknown".equalsIgnoreCase(IP)) {
			IP = request.getHeader("Proxy-Client-IP");
		}
		if (null == IP || 0 == IP.length() || "unknown".equalsIgnoreCase(IP)) {
			IP = request.getHeader("WL-Proxy-Client-IP");
		}
		if (null == IP || 0 == IP.length() || "unknown".equalsIgnoreCase(IP)) {
			IP = request.getRemoteAddr();
		}
		//对于通过多个代理的情况,第一个IP为客户端真实IP
		//多个IP会按照','分割。。'***.***.***.***'.length() = 15
		if (null != IP && IP.length() > 15) {
			if (IP.indexOf(",") > 0) {
				IP = IP.substring(0, IP.indexOf(","));
			}
		}
		return IP;
	}
	
	/**
	 * 获取客户端真实IP的另一种写法
	 * @see 实际上二者的思想是差不多的
	 */
	public static String getClientRealIP(HttpServletRequest request) {
		String IP = null;
		Enumeration enu = request.getHeaderNames();
		while (enu.hasMoreElements()) {
			String name = (String) enu.nextElement();
			if (name.equalsIgnoreCase("X-Forwarded-For")) {
				IP = request.getHeader(name);
			} else if (name.equalsIgnoreCase("Proxy-Client-IP")) {
				IP = request.getHeader(name);
			} else if (name.equalsIgnoreCase("WL-Proxy-Client-IP")) {
				IP = request.getHeader(name);
			}
			if (null!=IP && 0!=IP.length())
				break;
		}
		if (null==IP || 0==IP.length()){
			IP = request.getRemoteAddr();
		}
		return IP;
	}
}


你可能感兴趣的:(String,null,Class,工具)