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


     

  • 相关阅读:
    2018-04-13Java编程夯实学习心得(3)
    2018-03-28JavaScript学习心得
    2018-03-27mysql学习心得
    JavaScript-作用域
    样式切换图
    购物车结算
    Visual Studio Code快捷键操作
    复选框
    win10锁屏界面无法设置隐藏
    轮播图
  • 原文地址:https://www.cnblogs.com/moy25/p/8662295.html
Copyright © 2011-2022 走看看