一、 先上效果:
https://tools.zzphoenix.com/?ip=116.85.23.218
二、实现方式:
我们根据maxmind提供的数据库文件来获取
三、获取相应的文件:
https://mirrors-cdn.liferay.com/geolite.maxmind.com/download/geoip/database/GeoLiteCity-latest.zip
四、jar包引入:
<!-- 定义版本号 -->
<properties>
<java.version>1.8</java.version>
<geoip-api.version>1.2.15</geoip-api.version>
</properties>
<!-- 引入相应jar包 -->
<dependency>
<groupId>com.maxmind.geoip</groupId>
<artifactId>geoip-api</artifactId>
<version>${geoip-api.version}</version>
</dependency>
五、Java代码 文件copy类 FileCopy.java:
public class FileCopy implements CommandLineRunner { // 这里是文件copy,从jar包中,copy到绝对路径下
@Override
public void run(String... args) throws Exception {
InputStream stream = getClass().getClassLoader().getResourceAsStream("ip/GeoLiteCity.dat");
File targetFile = new File("/usr/local/mytools/GeoLiteCity.dat");
FileUtils.copyInputStreamToFile(stream, targetFile);
}
}
六、工具类IpUtil.java:
public static Location getCityByIp(String ip) {
Location location = null;
try {
File sourceFile = ResourceUtils.getFile("/usr/local/mytools/GeoLiteCity.dat"); // 这里是绝对路径
LookupService lookupService = new LookupService(
sourceFile, LookupService.GEOIP_MEMORY_CACHE);
location = lookupService.getLocation(ip);
System.out.println(JSON.toJSON(location));
} catch (IOException e) {
e.printStackTrace();
}
return location;
}
七、代码位置:
码云位置: https://gitee.com/mengxisoft/maxmind
八、微信号:
有任何疑问,可加微信交流