由于最近比较忙,所以一直没有更新博客。今天有一点点时间,来分享一下项目中用到的一个需求功能点。

需求描述:获取用户真实ip和ip归属地

实现效果:

 重点: IP地址工具类


import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;public class IPUtils {private static Logger logger = LoggerFactory.getLogger(IPUtils.class);/*** 获取IP地址* * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址* 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址*/public static String getIpAddr(HttpServletRequest request) {String ip = null;try {ip = request.getHeader("x-forwarded-for");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) {logger.error("IPUtils ERROR ", e);}//使用代理,则获取第一个IP地址if(StringUtils.isEmpty(ip) ) {if(ip.indexOf(",") > 0) {ip = ip.substring(0, ip.indexOf(","));}}return ip;}/*** 根据ip获取归属地* @param ip* @return*/public static String getAddress(String ip) {String url = "http://ip.ws.126.net/ipquery?ip=" + ip;String str = HttpUtil.get(url);if(!StrUtil.hasBlank(str)){String substring = str.substring(str.indexOf("{"), str.indexOf("}")+1);JSONObject jsonObject = JSONUtil.parseObj(substring);String province = jsonObject.getStr("province");String city = jsonObject.getStr("city");return "ip:"+ ip + ",省份:" + province + ",城市:" + city;}return null;}}

Java根据ip地址获取归属地相关推荐

  1. java根据ip地址获取城市地域信息

    java根据ip地址获取城市地域信息 这里提供两个公开的接口,一个是阿里的,一个是新浪的 http://ip.taobao.com/service/getIpInfo.php?ip=123.139.9 ...

  2. java 根据IP地址获取地理位置

    来源:http://www.ipplus360.com/tech/api/ 来源:http://blog.csdn.net/Cryhelyxx/article/details/40862101 精确查 ...

  3. Java 根据IP地址获取城市(ip2region)

    根据IP地址获取城市(ip2region) Ip2region是什么? Ip2region特性 99.9%准确率 标准化的数据格式 体积小 查询速度快 多查询客户端的支持 maven集成 小坑 Ip2 ...

  4. 【转载】 java根据ip地址获取详细地域信息

    互联网有很多接口可以实现通过ip查询到具体的位置,如下: 通过淘宝IP地址库获取IP位置 1. 请求接口(GET):http://ip.taobao.com/service/getIpInfo.php ...

  5. java通过ip地址获取相应对应的城市

    发现了一比较好的本地ip对应地址的库资源文件--做一下笔记. 官方网站 https://dev.maxmind.com/geoip/geoip2/geolite2/ 这里提供了免费的库文件,还有很好的 ...

  6. JAVA根据IP地址获取省份城市和经纬度(可获取国家名称 淘宝高德API如果是国外IP获取到的为空)

    所需jar包maven地址: <!-- 根据ip获取位置 --><dependency><groupId>com.maxmind.geoip2</groupI ...

  7. java 根据ip地址获取地理位置及运营商。

    1.基于淘宝API /**      * 根据ip获取城市(运营商)名称      * @param ip      * @return      * @throws Exception      * ...

  8. java 根据ip地址获取城市_Java 根据ip地址获取当前城市

    maxmind免费数据库maven位置:用来获取所要用的数据库文件(GeoLite2-City.mmdb) org.elasticsearch geolite2-databases 20151029 ...

  9. JAVA程序 通过IP地址 获取MAC地址

    转载自:https://blog.csdn.net/chwshuang/article/details/46958719 叙述 我们都知道通过在电脑上敲 cmd 后,输入ipconfig -all 来 ...

最新文章

  1. NLP实践:对话系统技术原理和应用
  2. mysql flush 使用
  3. 计算机第一课 教案 纪律,信息技术开学第一课-纪律
  4. python多个函数_什么是在Python中使用多个构造函数的干净的、pythonic的方法?
  5. php如何加密图片,php实现图片加密解密,支持设置密码 (两年后版本!)
  6. Hive之 hive的三种使用方式(CLI、HWI、Thrift)
  7. 在哪里学python-学Python从哪里开始?
  8. Android开发之ListView中Adapter的优化
  9. CSS 标签权重判断的方式
  10. 屏幕录像软件camtasia2022汉化版好用的录屏软件
  11. 校园智能安防监控解决方案
  12. 安装mentohust 64位
  13. 免Fan,国内直接访问,Instagram!文末还有…………
  14. 天地图2021版正式发布,清晰程度非常了得
  15. Android面试必过——Android常见的问题
  16. html5实现待机动画的效果
  17. linux su无效_Linux下su命令无反应的解决办法
  18. 楼天成回忆录 ACRush
  19. 浅谈赢得值理论的运用-Oracle p6
  20. Kali普通账户如何获取root管理员权限并切换中文?

热门文章

  1. Python后台运行 -- nohup python xxx.py
  2. 烤仔观察 | SEC 重拳出击,Brad Garlinghouse 能否成为拯救 Ripple 的关键先生?
  3. 易语言实现视频播放功能
  4. VM上linux突然断网解决办法
  5. Ubuntu下运行.sh文件
  6. 周鸿祎评互联网大佬编程能力:我可以排前三
  7. Linux中rm命令介绍
  8. Thinking in java:多线程
  9. WooCommerce Bookings 电子商务预订系统评测 – 创建WordPress预订系统有多好?
  10. 下面属于python内置对象的有哪些_python练习题-写一个函数,打印所有包含copy方法的内置对象...