Java获取ip地址

来源:互联网 发布:吉林省财政厅网络完全 编辑:程序博客网 时间:2024/05/21 09:24



直接帖代码

首先写一个IpUtil工具类

package com.craft.util;import javax.servlet.http.HttpServletRequest;/** *  * @author -.-- .- -. --.    --.. ..   .- -. * 获取用户ip地址 */public class IpUtil { /**     * 获取客户端ip地址(可以穿透代理)     *      * @param request     * @return     */    public static String getRemoteAddr(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.getHeader("HTTP_CLIENT_IP");        }        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {            ip = request.getHeader("HTTP_X_FORWARDED_FOR");        }        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {            ip = request.getRemoteAddr();        }        return ip;    }    private static final String[] HEADERS_TO_TRY = {         "X-Forwarded-For",        "Proxy-Client-IP",        "WL-Proxy-Client-IP",        "HTTP_X_FORWARDED_FOR",        "HTTP_X_FORWARDED",        "HTTP_X_CLUSTER_CLIENT_IP",        "HTTP_CLIENT_IP",        "HTTP_FORWARDED_FOR",        "HTTP_FORWARDED",        "HTTP_VIA",        "REMOTE_ADDR",        "X-Real-IP"};    /***     * 获取客户端ip地址(可以穿透代理)     * @param request     * @return     */    public static String getClientIpAddress(HttpServletRequest request) {        for (String header : HEADERS_TO_TRY) {            String ip = request.getHeader(header);            if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {                return ip;            }        }        return request.getRemoteAddr();    }    /***     * 获取客户端ip地址(可以穿透代理)     * @param request     * @return     */    public static String getClientIpAddr(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.getHeader("HTTP_X_FORWARDED_FOR");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("HTTP_X_FORWARDED");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("HTTP_X_CLUSTER_CLIENT_IP");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("HTTP_CLIENT_IP");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("HTTP_FORWARDED_FOR");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("HTTP_FORWARDED");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("HTTP_VIA");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getHeader("REMOTE_ADDR");          }          if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {              ip = request.getRemoteAddr();          }          return ip;      }    public static String getIpAddr(HttpServletRequest request) {        String ip = request.getHeader("X-Real-IP");        if (null != ip && !"".equals(ip.trim())                && !"unknown".equalsIgnoreCase(ip)) {            return ip;        }        ip = request.getHeader("X-Forwarded-For");        if (null != ip && !"".equals(ip.trim())                && !"unknown".equalsIgnoreCase(ip)) {            // get first ip from proxy ip            int index = ip.indexOf(',');            if (index != -1) {                return ip.substring(0, index);            } else {                return ip;            }        }        return request.getRemoteAddr();    }        }



然后就是调用了 


System.out.println("***********************************************");System.out.println("getIpAddr:" + IpUtil.getIpAddr(request));System.out.println("getRemoteAddr:"+IpUtil.getRemoteAddr(request));System.out.println("getClientIpAddr:"+IpUtil.getClientIpAddr(request));System.out.println("getClientIpAddress:"+IpUtil.getClientIpAddress(request)); 
System.out.println("***********************************************");

ojbk 可以了 尽情的恣意吧 

有不对的地方 欢迎补充 

不接受反驳 ~~~~~~




原创粉丝点击