zoukankan      html  css  js  c++  java
  • 自定义类库:java根据HttpServletRequest请求获取ip地址

    一、在web站点中可以根据HttpServletRequest对象获取真实的客户机ip

    package com.moy.whymoy.test.utils;
    
    import javax.servlet.http.HttpServletRequest;
    import java.util.Objects;
    
    /**
     * [Project]:whymoy  <br/>
     * [Email]:moy25@foxmail.com  <br/>
     * [Date]:2018/3/28  <br/>
     * [Description]:  <br/>
     *
     * @author YeXiangYang
     */
    public abstract class IpUtils {
    
        /**
         * 获取ip地址
         *
         * @param request 请求
         * @return 返回ip字符串
         */
        public static String getIpAddress(HttpServletRequest request) {
            if (Objects.isNull(request)) {
                return "unknown";
            }
            String ip = request.getHeader("x-forwarded-for");
    
            if (nonValidIp(ip)) {
                ip = request.getHeader("Proxy-Client-IP");
            }
            if (nonValidIp(ip)) {
                ip = request.getHeader("X-Forwarded-For");
            }
            if (nonValidIp(ip)) {
                ip = request.getHeader("WL-Proxy-Client-IP");
            }
            if (nonValidIp(ip)) {
                ip = request.getHeader("X-Real-IP");
            }
            if (nonValidIp(ip)) {
                ip = request.getRemoteAddr();
            }
    
            return ip;
        }
    
    
        /**
         * 是无效的ip地址
         *
         * @param ip ip字符串
         * @return 无效的ip地址返回<tt>true</tt>
         */
        public static boolean nonValidIp(String ip) {
            return ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip);
        }
    
    
        /**
         * 是有效的ip地址
         *
         * @param ip ip字符串
         * @return 有效的ip地址返回<tt>true</tt>
         */
        public static boolean isValidIp(String ip) {
            return !nonValidIp(ip);
        }
    }

    yexiangyang

    moyyexy@gmail.com


     

  • 相关阅读:
    Centos安装步骤
    Charles抓包工具的使用
    Charles抓包问题
    关于Windows系统下端口被占用的问题和task命令
    Selenium3+python自动化016-Selenium Grid
    Selenium3+python自动化016-多线程
    JDBC使用案例
    JDBC基础和使用
    文件下载案例
    ServletContext
  • 原文地址:https://www.cnblogs.com/moy25/p/8662295.html
Copyright © 2011-2022 走看看