您的位置:首页 > 编程语言 > Java开发

java获取客户端的ip地址

2016-03-08 00:00 513 查看
有时候我们需要根据系统的业务,做一些事情,比如,我这里有一个商城,今天有一件商品促销,限每个ip只能购买一件,那么我们就需要记录用户下单的ip,好的下面我直接贴出来代码。

/**
* 获得客户端ip地址
*
* @param request
* @return 获得客户端ip地址
*/
public final static String getClientIp(HttpServletRequest request){
String unknown = "unknown";
String wrap = "\n\t\t";
StringBuilder logBuilder = new StringBuilder();
// 是否使用反向代理
String ipAddress = request.getHeader(header_xForwardedFor);
logBuilder.append(wrap + "header_xForwardedFor:" + ipAddress);
if (Validator.isNullOrEmpty(ipAddress) || unknown.equalsIgnoreCase(ipAddress)){
ipAddress = request.getHeader(header_proxyClientIP);
logBuilder.append(wrap + "header_proxyClientIP:" + ipAddress);
}
if (Validator.isNullOrEmpty(ipAddress) || unknown.equalsIgnoreCase(ipAddress)){
ipAddress = request.getHeader(header_wLProxyClientIP);
logBuilder.append(wrap + "header_wLProxyClientIP:" + ipAddress);
}
if (Validator.isNullOrEmpty(ipAddress) || unknown.equalsIgnoreCase(ipAddress)){
ipAddress = request.getRemoteAddr();
logBuilder.append(wrap + "request.getRemoteAddr():" + ipAddress);
}
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ipAddress != null && ipAddress.length() > 15){ // "***.***.***.***".length() = 15
logBuilder.append(wrap + "all:" + ipAddress);
if (ipAddress.indexOf(",") > 0){
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
}
}
log.debug(logBuilder.toString());
return ipAddress;
}


OK,这个方法会返回一个用户的ip地址的字符串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: