欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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地址查詢服務(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("======> 獲取客戶端IP地址:clientIP:{}", ip);
        if (StrUtil.isBlank(ip)) {
         log.error("獲取用戶ip失敗,用戶手機(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ì)返回內(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獲取用戶位置失敗,用戶phone = {}", userPhone);
       log.error("通過(guò)ip獲取用戶位置失敗,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)文章

  • SpringCloud兩種注冊(cè)中心的實(shí)現(xiàn)

    SpringCloud兩種注冊(cè)中心的實(shí)現(xiàn)

    本文主要介紹了SpringCloud兩種注冊(cè)中心的實(shí)現(xiàn),包括服務(wù)注冊(cè)、服務(wù)拉取、負(fù)載均衡和實(shí)例權(quán)重配置等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-01-01
  • Java8使用stream實(shí)現(xiàn)list中對(duì)象屬性的合并(去重并求和)

    Java8使用stream實(shí)現(xiàn)list中對(duì)象屬性的合并(去重并求和)

    這篇文章主要介紹了Java8使用stream實(shí)現(xiàn)list中對(duì)象屬性的合并(去重并求和),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java基本類型和包裝類型的區(qū)別

    Java基本類型和包裝類型的區(qū)別

    這篇文章主要介紹了Java基本類型和包裝類型的區(qū)別,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-09-09
  • Java 如何實(shí)現(xiàn)照片轉(zhuǎn)化為回憶中的照片

    Java 如何實(shí)現(xiàn)照片轉(zhuǎn)化為回憶中的照片

    本文主要介紹了可以對(duì)圖片進(jìn)行色彩處理的Java工具類,讓圖片變成回憶中的畫(huà)面,主要將圖片做黑白與褐色的處理。代碼具有一定價(jià)值,感興趣的童鞋可以關(guān)注一下
    2021-11-11
  • Spring Boot多數(shù)據(jù)源及其事務(wù)管理配置方法

    Spring Boot多數(shù)據(jù)源及其事務(wù)管理配置方法

    本篇文章主要介紹了Spring Boot多數(shù)據(jù)源及其事務(wù)管理配置方法,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-04-04
  • 一文掌握IDEA中的Maven集成與創(chuàng)建

    一文掌握IDEA中的Maven集成與創(chuàng)建

    maven是用來(lái)幫助我們快速搭建項(xiàng)目結(jié)構(gòu)與開(kāi)發(fā)環(huán)境的好工具,這篇文章主要介紹了一文掌握IDEA中的Maven集成與創(chuàng)建,需要的朋友可以參考下
    2023-02-02
  • SpringCloud 服務(wù)網(wǎng)關(guān)路由規(guī)則的坑及解決

    SpringCloud 服務(wù)網(wǎng)關(guān)路由規(guī)則的坑及解決

    這篇文章主要介紹了SpringCloud 服務(wù)網(wǎng)關(guān)路由規(guī)則的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java中的排序Comparator類用法詳解

    Java中的排序Comparator類用法詳解

    這篇文章主要介紹了Java中的排序Comparator類用法詳解,Comparator?類常作為?sorted()?方法的參數(shù)傳遞給?sorted?方法,用來(lái)解決給集合排序,自定義排序規(guī)則的問(wèn)題,需要的朋友可以參考下
    2023-08-08
  • Windows安裝兩個(gè)或多個(gè)JDK并實(shí)現(xiàn)自由切換的方法

    Windows安裝兩個(gè)或多個(gè)JDK并實(shí)現(xiàn)自由切換的方法

    最近新接手一個(gè)項(xiàng)目,啟動(dòng)的時(shí)候,發(fā)現(xiàn)有些jar和現(xiàn)在正在使用的JDK版本不一致,一直啟動(dòng)有問(wèn)題,想著就多裝一個(gè)JDK,由于為了保證java的運(yùn)行環(huán)境和編譯環(huán)境保持一致,就需要我們?cè)O(shè)置jdk的環(huán)境變量,所以本文給大家介紹了Windows安裝兩個(gè)或多個(gè)JDK并實(shí)現(xiàn)自由切換的方法
    2025-03-03
  • 教你在SpringBoot中管理多環(huán)境配置文件

    教你在SpringBoot中管理多環(huán)境配置文件

    在項(xiàng)目開(kāi)發(fā)中,一般會(huì)分為開(kāi)發(fā)環(huán)境,測(cè)試環(huán)境和生產(chǎn)環(huán)境.如果總是在一個(gè)文件中修修改改,難免會(huì)出現(xiàn)錯(cuò)誤,尤其是在交接的過(guò)程中,一旦出現(xiàn)問(wèn)題,輕則丟失績(jī)效,重則需要?jiǎng)h庫(kù)跑路.本文則帶大家詳細(xì)了解怎么管理多環(huán)境配置文件,需要的朋友可以參考下
    2021-05-05

最新評(píng)論