最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java獲取IP和IP的歸屬地的方法實(shí)踐

 更新時(shí)間:2024年05月26日 08:37:51   作者:Kyle0432  
在Java中獲取IP地址通常指的是獲取本地機(jī)器的IP地址或者通過(guò)某種方式獲取的遠(yuǎn)程IP地址,本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下

在Java中,獲取IP地址通常指的是獲取本地機(jī)器的IP地址或者通過(guò)某種方式(如HTTP請(qǐng)求)獲取的遠(yuǎn)程IP地址。代碼案例如下:

而要獲取IP的歸屬地(地理位置信息),則通常需要使用第三方IP地址查詢(xún)服務(wù),我這里使用的是 ip2region開(kāi)源IP庫(kù)。代碼操作步驟如下:

1.導(dǎo)入ip2region庫(kù):

2.在pom文件中包含該目錄下的對(duì)應(yīng)資源 

3.根據(jù)IP獲取歸屬地

public static String getAddressLog(String userPhone, String ip) {
    try {
        HttpServletRequest request = RequestUtil.getRequest();
        log.info("======> 獲取客戶(hù)端IP地址:clientIP:{}", ip);
        if (StrUtil.isBlank(ip)) {
         log.error("獲取用戶(hù)ip失敗,用戶(hù)手機(jī)號(hào) = " + userPhone);
        } else {
          IpLocation ipLocation = IPUtil.getLocation(ip);
          if (ObjectUtil.isNotNull(ipLocation.getProvince())) {
              //根據(jù)業(yè)務(wù)需求來(lái)確定需要定位到省還是省-市,我這里就直接是定位到省
              String address = ipLocation.getProvince();
              log.info("======> IP解析后的地址信息:{}", address);
              //注意:如果是內(nèi)網(wǎng)IP的話(huà),這里將查詢(xún)不到歸屬地,而會(huì)返回內(nèi)網(wǎng),
              //這里如果是內(nèi)網(wǎng)IP就直接處理變成廣東省。
              if (StringUtils.isNotEmpty(address)){
                 return address.contains("內(nèi)網(wǎng)") ? "廣東省" : address;
              }
           }
         }
     } catch (Exception e) {
       log.error("通過(guò)ip獲取用戶(hù)位置失敗,用戶(hù)phone = {}", userPhone);
       log.error("通過(guò)ip獲取用戶(hù)位置失敗,e = {}", e);
     }
}

 /**
     * 根據(jù)iP獲取歸屬地信息
     */
public static IpLocation getLocation(String ip) {
   IpLocation location = new IpLocation();
   location.setIp(ip);
   try (InputStream inputStream = IPUtil.class.getResourceAsStream("/ipdb/ip2region.xdb");) {
     byte[] bytes = IoUtil.readBytes(inputStream);
     Searcher searcher = Searcher.newWithBuffer(bytes);
     String region = searcher.search(ip);
     log.info("============> region:{}", region);
     if (StrUtil.isNotBlank(region)) {
       // xdb返回格式 國(guó)家|區(qū)域|省份|城市|ISP,
       // 只有中國(guó)的數(shù)據(jù)絕大部分精確到了城市,其他國(guó)家部分?jǐn)?shù)據(jù)只能定位到國(guó)家,后前的選項(xiàng)全部是0
       String[] result = region.split("\\|");
       location.setCountry(ZERO.equals(result[0]) ? StrUtil.EMPTY : result[0]);
       location.setProvince(ZERO.equals(result[2]) ? StrUtil.EMPTY : result[2]);
       location.setCity(ZERO.equals(result[3]) ? StrUtil.EMPTY : result[3]);
       location.setIsp(ZERO.equals(result[4]) ? StrUtil.EMPTY : result[4]);
      }
            searcher.close();
   } catch (Exception e) {
      e.printStackTrace();
      return location;
   }
   return location;
}

 4.結(jié)果展示

到此這篇關(guān)于java獲取IP和IP的歸屬地的方法實(shí)踐的文章就介紹到這了,更多相關(guān)java獲取IP和IP的歸屬地內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis創(chuàng)建項(xiàng)目報(bào)Invalid?bound?statement?(not?found)錯(cuò)誤解決方法

    mybatis創(chuàng)建項(xiàng)目報(bào)Invalid?bound?statement?(not?found)錯(cuò)誤解決方法

    使用MyBatis能夠幫助我們將SQL語(yǔ)句和Java代碼分離,這篇文章主要給大家介紹了關(guān)于mybatis創(chuàng)建項(xiàng)目報(bào)Invalid?bound?statement?(not?found)錯(cuò)誤的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Java遍歷字符串和統(tǒng)計(jì)字符個(gè)數(shù)的操作方法

    Java遍歷字符串和統(tǒng)計(jì)字符個(gè)數(shù)的操作方法

    這篇文章主要介紹了Java遍歷字符串和統(tǒng)計(jì)字符個(gè)數(shù)的操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Java自動(dòng)生成趨勢(shì)比對(duì)數(shù)據(jù)的方法分享

    Java自動(dòng)生成趨勢(shì)比對(duì)數(shù)據(jù)的方法分享

    這篇文章主要和大家分享了一種Java自動(dòng)生成趨勢(shì)比對(duì)數(shù)據(jù)的方法設(shè)計(jì)及實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • SpringBoot使用prometheus監(jiān)控的示例代碼

    SpringBoot使用prometheus監(jiān)控的示例代碼

    這篇文章主要介紹了SpringBoot使用prometheus監(jiān)控的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Spring?boot2.0?實(shí)現(xiàn)日志集成的方法(3)

    Spring?boot2.0?實(shí)現(xiàn)日志集成的方法(3)

    這篇文章主要介紹了Spring?boot2.0?實(shí)現(xiàn)日志集成的方法,基于上一篇將日志信息根據(jù)類(lèi)別輸出到不同的文件中,這篇文章將通過(guò)日志來(lái)監(jiān)控用戶(hù)的操作行為、請(qǐng)求的耗時(shí)情況,針對(duì)耗時(shí)久的請(qǐng)求進(jìn)行性能分析,提升系統(tǒng)性能,需要的小伙伴可以參考一下
    2022-04-04
  • mac系統(tǒng)剛安裝的idea打不開(kāi)的問(wèn)題及解決

    mac系統(tǒng)剛安裝的idea打不開(kāi)的問(wèn)題及解決

    這篇文章主要介紹了mac系統(tǒng)剛安裝的idea打不開(kāi)的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java for循環(huán)常見(jiàn)優(yōu)化方法案例詳解

    Java for循環(huán)常見(jiàn)優(yōu)化方法案例詳解

    這篇文章主要介紹了Java for循環(huán)常見(jiàn)優(yōu)化方法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • springbatch的封裝與使用實(shí)例詳解

    springbatch的封裝與使用實(shí)例詳解

    主要實(shí)現(xiàn)批量數(shù)據(jù)的處理,我對(duì)batch進(jìn)行的封裝,提出了jobBase類(lèi)型,具體job需要實(shí)現(xiàn)它即可。這篇文章主要介紹了springbatch的封裝與使用 ,需要的朋友可以參考下
    2019-04-04
  • java中ThreadLocal取不到值的兩種原因

    java中ThreadLocal取不到值的兩種原因

    這篇文章主要介紹了java中ThreadLocal取不到值的兩種原因,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java編寫(xiě)迷宮小游戲

    Java編寫(xiě)迷宮小游戲

    最近經(jīng)常在機(jī)房看同學(xué)在玩一個(gè)走迷宮的游戲,比較有趣,自己也用java寫(xiě)一個(gè)實(shí)現(xiàn)隨機(jī)生成迷宮的算法,其實(shí)就是一個(gè)圖的深度優(yōu)先遍歷算法.
    2016-05-05

最新評(píng)論

炎陵县| 阿拉善左旗| 剑河县| 黎平县| 广南县| 怀集县| 留坝县| 遵义市| 嵩明县| 金溪县| 余干县| 基隆市| 大足县| 临城县| 乃东县| 博爱县| 淮南市| 璧山县| 铁岭市| 余干县| 临湘市| 新民市| 大邑县| 水城县| 扶风县| 蛟河市| 项城市| 永登县| 北安市| 宣恩县| 出国| 呼伦贝尔市| 富平县| 闸北区| 淮南市| 扶沟县| 威信县| 镇平县| 南宁市| 凤庆县| 宜都市|