• javaweb_获取ip


    /**
         * 获取访问者IP
         * 
         * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。
         * 
         * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割),
         * 如果还不存在则调用Request .getRemoteAddr()。
         * 
         * @param request
         * @return
         */
        public static String getIpAddr(HttpServletRequest request) {
            if (request == null) {
                request = ((ServletRequestAttributes) RequestContextHolder
                        .getRequestAttributes()).getRequest();
            }
            String ip = request.getHeader("X-Real-IP");
            if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
                return ip;
            }
            ip = request.getHeader("X-Forwarded-For");
            if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
                // 多次反向代理后会有多个IP值,第一个为真实IP。
                int index = ip.indexOf(',');
                if (index != -1) {
                    return ip.substring(0, index);
                } else {
                    return ip;
                }
            } else {
                return request.getRemoteAddr();
            }
        }
    
        /**
         * 获取客户端IP地址,
         * 没有request对象时,使用此方法
         * 
         * @param request
         * @return
         */
        public static String getIpAddr() {
            try {
                return getIpAddr(null);
            } catch (Exception e) {
                return "127.0.0.1";
            }
        }
    工作小总结,有错请指出,谢谢。
  • 相关阅读:
    ASP.NET API盘点
    C# POST与Get数据
    洛谷 P3373 【模板】线段树 2
    洛谷 P1972 [SDOI2009]HH的项链
    洛谷 P1113 杂务(vector)
    POJ 3249 Test for Job
    POJ 1734 Sightseeing trip(Floyd)
    洛谷 P1202 [USACO1.1]黑色星期五Friday the Thirteenth
    洛谷 P1484 种树
    洛谷 P1801 黑匣子_NOI导刊2010提高(06)
  • 原文地址:https://www.cnblogs.com/zilanghuo/p/5221083.html
Copyright © 2020-2023  润新知