百摩网
当前位置: 首页 生活百科

java得到客户端ip地址吗(java如何实现获取客户端ip地址)

时间:2023-07-22 作者: 小编 阅读量: 2 栏目名: 生活百科

java如何实现获取客户端ip地址java实现获取客户端ip第一步:我们先来定义一个工具类,专门用于封装ip相关的方法类packagecom.example.review.util;importorg.apache.commons.l。

java得到客户端ip地址吗?第一步:我们先来定义一个工具类,专门用于封装ip相关的方法类,今天小编就来聊一聊关于java得到客户端ip地址吗?接下来我们就一起去研究一下吧!

java得到客户端ip地址吗

java实现获取客户端ip

第一步:我们先来定义一个工具类,专门用于封装ip相关的方法类。

package com.example.review.util;import org.apache.commons.lang3.StringUtils;import javax.servlet.http.httpervletRequest;/** * ip相关工具类 * * @Author luoYong* @Date 2022-03-30 17:16*/public class IpUtils {}复制代码

第二步:也就是此期教学的核心所在了,那究竟怎么获取客户端ip呢?我也就不卖关子了。

通常获取客户端的IP地址都是通过 request.getRemoteAddr() ,对吧,但是你有想过么,如今基本系统都会进行域名代理等,比如通过 Apache,Squid 等反向代理软件,使用getRemoteAddr() 根本无法再获取到客户端的真实 IP 地址了。

为什么加了代理就获取不到了呢?这是因为在客户端和服务之间增加了中间代理,因此服务器是无法直接拿到客户端的 IP地址,服务器端应用也无法直接通过转发请求的地址返回给客户端,基本这种获取方式就直接被pass掉了。

如果还不理解,可以看下下边的代理流程示意图,你就会理解啦。

如果只局限系统不做代理,那肯定是ok的。那系统基本不可能不做代理的呀,所以咋办?别着急,我会告诉你怎么玩儿,如果使用了我的教学方法还获取不到,请你来揍我,好吧?

如下是具体获取客户端ip方法类:仅供大家参考。

/**** 获取客户端ip地址* @param request*/public static String getIP(final httpervletRequest request) throws Exception {if (request == null) {throw (new Exception("getIpAddr method httpervletRequest Object is null"));}String ipStr = request.getHeader("x-forwarded-for");if (StringUtils.isBlank(ipStr) || "unknown".equalsIgnoreCase(ipStr)) {ipStr = request.getHeader("Proxy-Client-IP");}if (StringUtils.isBlank(ipStr) || "unknown".equalsIgnoreCase(ipStr)) {ipStr = request.getHeader("WL-Proxy-Client-IP");}if (StringUtils.isBlank(ipStr) || "unknown".equalsIgnoreCase(ipStr)) {ipStr = request.getRemoteAddr();}// 多个路由时,取第一个非unknown的ipfinal String[] arr = ipStr.split(",");for (final String str : arr) {if (!"unknown".equalsIgnoreCase(str)) {ipStr = str;break;}}//目的是将localhost访问对应的ip 0:0:0:0:0:0:0:1 转成 127.0.0.1。return ipStr.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipStr;}复制代码

需要注意的是,自己本地开发,基本都是通过使用 [ localhost ]标准主机名来进行接口访问的,对吧,那么你就会特别好奇,数据库记录日志 ip 这一栏,ip有的竟然是 0:0:0:0:0:0:0:1。

为什么获取到的ip是这样呢?这是因为 0:0:0:0:0:0:0:1 是[ ipv6 ]的表现形式,对应[ ipv4 ]来说相当于127.0.0.1,也就是本机。所以我在最后通过三目运算强行把ipv6地址转成了ipv4地址。这样讲大家可否能理解?不理解就回头好好恶补一下计算机网络,这也不是不可以。

如下分别是通过 localhost 及实际ip分别进行接口访问,数据库保存的操作日志记录。

附上获取本地ip数据库截图:

    推荐阅读
  • 2022年湘江欢乐水寨预计6月18日开园(2022年湘江欢乐水寨预计6月18日开园对吗)

    炎炎夏日,长沙湘江欢乐水寨,即将开园啦,预计6月18日开园。开园还有众多优惠福利哦。福利一:120cm以下儿童免费这个夏天,湘江欢乐城诚邀每一个可爱的人类幼崽来欢乐水寨免费玩水!尽情释放孩子的童趣和欢笑还不赶快带上萌娃出发一起在水上王国放“粽”一“夏”!

  • 财神爷正确的摆放位置(财神爷如何摆放)

    财神爷正确的摆放位置摆放在财位、吉位家中的风水布局中,一般都会有财位,这时候财神最好摆放在财位上,而且财位周围可以适当摆放观叶绿植,以保证财位的生机,或者在财神旁边放上一些吉祥物,起到“财上添财”的作用。将财神摆放在吉位,可以有效发挥财神聚财吸财的作用,让家运昌盛。如果将这类财神安放在室内的神龛之中,不但无法招财,还可能会带来厄运。

  • 开车遇暴雨应该怎么做(在下暴雨时开车注意事项)

    降低车速,保持慢行。开车的司机朋友一定要注意,遇到大暴雨的时候一定要降低车速,保持车慢速行驶,以免由于不清楚路况造成碰撞等事故并且快速行驶会溅起水浪更容易被进气管吸入,造成汽车的损伤。挡风玻璃和车的视镜要保持清楚干净。大暴雨的时候及时的打开雨刷,并且消除挡风玻璃和视镜上的雾气。暴雨天一定不要和车、和行人、和非机动车抢道,应耐心的慢速行驶,避免事故发生。

  • 深圳坪山新区开通公交车(这5条公交线路有调整)

    这5条公交线路有调整据深圳市东部公交微信公号消息,2020年8月19日起,M480线等5条公交线路一端总站、途经道路、停靠站点及服务时间等营运信息将调整此外,B883线等3条线路公交线路将终止运营■B952线、935线、。

  • 经典成语解释6000句(趣学悦读每日一成语)

    博采众长意思为广泛采纳众人的长处及各方面的优点,或从多方面吸取各家长处。王羲之,东晋最杰出的书法,书法作品《兰亭序》被历代书家公认为举世无双的“天下第一行书”。王羲之七岁开始学书,十二岁时经父亲传授笔法论,先后从师于出身书法世家的卫夫人和叔父王廙(yì),后来渡江北游名山,草书师法张芝,正书得力于钟繇(yáo),博采众长后,自成一派。

  • 小学英语文具类词汇教学(鞍山小学教育小学英语on)

    下面希望有你要的答案,我们一起来看看吧!小学英语文具类词汇教学鞍山小学教育丨小学英语《onfoot和bybike使用介绍》

  • 生活中常见的消防安全常识(家庭防火必备消防安全常识)

    家庭防火必备消防安全常识,一起储备起来!

  • 薇娅被封对淘宝有影响吗(薇娅直播再翻车)

    最近,又有网友发现薇娅在直播间售卖山寨联名款,经由专业博主扒皮后,薇娅在直播间做出了回应,她称自己理解错误,然后通过退款不退货的方式解决售假问题。这位博主称薇娅在直播间售卖的奢侈品联名风扇售价198元,称是与国外正版品牌联名。这回薇娅售卖假货被抓,也引发了网友对她抄袭山寨的一系列嘲讽。

  • 异地买房有哪些注意事项(异地买房注意事项有哪些)

    一般来说,实地考察的主要包括当地的价格、地段、开发商的信息房产规划设计效果图、具体房间的楼层、户型图、销售状态等。还需要考察所购房产水、电、光纤等入户状况及周边公交、医院、商场超市等市政设施的配套情况。

  • 玻璃胶去除小诀窍 玻璃胶的去除小窍门

    本站,中国知名大型装修平台,装修领导品牌。