首页 > 其他分享 >拿ip 工具类

拿ip 工具类

时间:2023-04-06 15:37:21浏览次数:37  
标签:ip getHeader request equalsIgnoreCase unknown 工具 StringUtils

IpUtils:

完整代码;

点击查看代码

import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;

public class IpUtils {

    public static String getIpAddr(HttpServletRequest request) {
        String unknown = "unknown";
        String ip = null;
        try {
//            ip = request.getHeader("x-forwarded-for");
            ip = request.getHeader("X-Real-IP");
            if (StringUtils.isEmpty(ip) || unknown.equalsIgnoreCase(ip)) {
                ip = request.getHeader("Proxy-Client-IP");
            }
            if (StringUtils.isEmpty(ip) || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
                ip = request.getHeader("WL-Proxy-Client-IP");
            }
            if (StringUtils.isEmpty(ip) || unknown.equalsIgnoreCase(ip)) {
                ip = request.getHeader("HTTP_CLIENT_IP");
            }
            if (StringUtils.isEmpty(ip) || unknown.equalsIgnoreCase(ip)) {
                ip = request.getHeader("HTTP_X_FORWARDED_FOR");
            }
            if (StringUtils.isEmpty(ip) || unknown.equalsIgnoreCase(ip)) {
                ip = request.getRemoteAddr();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ip;
    }
}

标签:ip,getHeader,request,equalsIgnoreCase,unknown,工具,StringUtils
From: https://www.cnblogs.com/Sappy/p/17292882.html

相关文章

  • HTTP JSON接口模拟工具interfake的使用(模拟接口返回json数据)
    场景在与第三方系统进行模拟对接时,需要本地根据接口文档的示例json数据快速模拟出来接口进行调试用。Interfake官方github地址:https://github.com/basicallydan/interfakeInterfake能简便地创建虚假的HTTPAPI,只需简单几行代码就可以创建模拟JSON接口(使用命令行方式也可以......
  • 干掉复杂的工具类,国产Java工具类库 Hutool 很香!
    Hutool大家已经比较熟悉了,这是一个超全的Java工具库,深受国内开发者的喜爱。我之前其实是不太喜欢使用这种功能太多的工具类的,也比较担心稳定性和安全性,后面慢慢接受了就感觉其实也还好。而且,我们还可以按需只引入自己需要的功能模块,相对也比较灵活。Hutool的官方文档介绍的......
  • map和bean转换工具类
    bean转Map:Map转bean:完整代码:点击查看代码importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.lang.reflect.Field;importjava.lang.reflect.Modifier;importjava.util.HashMap;importjava.util.Map;/***map转bean*@authorSappy*@......
  • 思考 TypeScript namespace,复习 class 语法
    前言据我所知,早期JavaScript没有class语法,很多都是函数,即便是现在的class本质上也是一个函数。在这里不说函数与class之间的关系和区别。下面将从class语法上讲解,阐述为什么有class以及作用;对class语法进行了探讨之后,再思考TypeScript的namespace给我们带来......
  • JavaScript超大文件上传解决方案:分片断点上传(一)
    ​ 前段时间做视频上传业务,通过网页上传视频到服务器。视频大小小则几十M,大则1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制;2,请求时间过长,请求超时;3,传输中断,必须重新上传导致前功尽弃; 解决方案:1,修改服务端上传的限制配置;Nginx以......
  • bean转换工具类
    单个:LIST:完整代码:点击查看代码importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.BeanUtils;importjava.util.ArrayList;importjava.util.Collection;importjava.util.List;publicclassConvertUtils{priva......
  • springboot阿里云oss工具类
    pom依赖;yml配置:读取配置文件类:上传:完整工具类代码:点击查看代码`importcn.hutool.core.lang.UUID;importcom.aliyun.oss.OSS;importcom.aliyun.oss.OSSClientBuilder;importcom.aliyun.oss.model.*;importcom.luzhizheng.common.config.OSSConfig;impor......
  • 2023 海外工具站 2 月复盘
    观点:关于AIGC最近看的这块挺多。分享下我对AIGC的一些观点AIGC(AIGeneratedContent)是由AI生成的内容。我认为的内容很多,文字、图片、视频、音频、3D等等观点1:AIGC不应该卷互联网行业,for工业for生产。比如服装来源于设计稿,应该由AI辅助,让服装设计plus下观点2......
  • 爬取海量ip
    importrequestsfromlxmlimportetreeimportpandasaspdimporttimeurl="http://www.66ip.cn/index.html"headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/108.0.0......
  • 定位提示工具
     以下实例中,提示工具显示在指定元素的右侧(left:105%)。注意 top:-5px 同于定位在容器元素的中间。使用数字 5 因为提示文本的顶部和底部的内边距(padding)是5px。如果你修改padding的值,top值也要对应修改,这样才可以确保它是居中对齐的。在提示框显示在左边的情况也是......