获取请求ip/浏览器/操作系统/浏览器版本
使用到第三方工具类 hutool

<!-- hutool工具类 -->
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.3</version>
</dependency>
import cn.hutool.http.useragent.UserAgent;
import cn.hutool.http.useragent.UserAgentUtil;import javax.servlet.http.HttpServletRequest;/*** 工具类 - ip/浏览器/操作系统/浏览器版本** @author ao.nie* @date 2022/4/14*/
public class HttpUtils {private HttpUtils() {}/*** 请求url** @return {@link String}*/public static String getRequestUrl() {return RequestContextHolderUtils.getRequest().getRequestURI();}/*** 获取浏览器名字** @param request 请求* @return {@link String}*/public static String getBrowserName(HttpServletRequest request) {String uaStr = request.getHeader("User-Agent");UserAgent ua = UserAgentUtil.parse(uaStr);return ua.getBrowser().toString();}/*** 获取浏览器版本** @param request 请求* @return {@link String}*/public static String getBrowserVersion(HttpServletRequest request) {String uaStr = request.getHeader("User-Agent");UserAgent ua = UserAgentUtil.parse(uaStr);return ua.getVersion();}/*** 获取操作系统名称** @param request 请求* @return {@link String}*/public static String getOsName(HttpServletRequest request) {String uaStr = request.getHeader("User-Agent");UserAgent ua = UserAgentUtil.parse(uaStr);return ua.getOs().toString();}/*** 得到ip addr** @param request 请求* @return {@link String}*/public static String getIpAddr(HttpServletRequest request) {if (request == null) {return "unknown";} else {String ip = request.getHeader("x-forwarded-for");if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("X-Forwarded-For");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("X-Real-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}if ("0:0:0:0:0:0:0:1".equals(ip)) {ip = "127.0.0.1";}if (ip.contains(",")) {ip = ip.split(",")[0];}return ip;}}

Java工具类-获取请求ip/浏览器/操作系统/浏览器版本相关推荐

  1. java工具类获取文件扩展名与content-type、http与content-type映射关系

    java工具类获取文件扩展名与content-type.http与content-type映射关系 大家好,我是酷酷的韩~ 一.对应关系参考地址: http://doc.chacuo.net/cont ...

  2. java项目中获取真实ip地址

    一.工具类 /*** 获取客户端IP** @param request 请求对象* @return IP地址*/public static String getIpAddr(HttpServletRe ...

  3. java获取请求ip的方法

    在上篇文章中我们介绍了 java获取请求 ip的方法,那么这篇文章我们就来详细讲解下获取请求 ip的方法.获取请求 ip的方法是基于 HTTP协议的,其原理如下: 1.用 web应用程序,将 web服 ...

  4. java 工具类-去除字符串中特殊字符、全角转为半脚、获取字符串中姓名/电话、姓名重复后追加a.b.c...aa,ab..

    java 工具类-去除字符串中特殊字符.全角转为半脚.获取字符串中姓名/电话.姓名重复后追加a.b.c-aa,ab- public class NameUtil {/*** 姓名重复后追加a.b.c. ...

  5. (6)常用的Java工具类

    目录 前言: 第一部分:常用的16个工具类 一.org.apache.commons.io.IOUtils 二.org.apache.commons.io.FileUtils 三.org.apache ...

  6. 【Java工具类】(22)—服务器传文件工具类SCp和Sftp

    Java工具类(22)-服务器传文件工具类SCp和Sftp 1.Scp package com.awifi.capacity.docker.manager.utils;import ch.ethz.s ...

  7. Java工具类Result

    Java工具类Result Result:(下面写了两种Result类的编写方式,这两种的使用方法在最后面),最主要的功能就是为了向前端发送数据的时候能够更高效快捷,编写代码如下: 首先编写一个枚举类 ...

  8. 干货:排名前 16 的 Java 工具类!

    2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类!   在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...

  9. 排名前 16 的 Java 工具类

    转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...

最新文章

  1. 使用arthas采集火焰图
  2. 【Visual C++】游戏开发笔记十四 游戏画面绘图(四) 华丽的CImage类
  3. 那些常见的Web前端学习误区分享
  4. 【好消息】Python和Excel终于可以互通了!!
  5. 对于容斥原理反演的思考和总结
  6. 击鼓传花c语言编程题,c语言-第5章 循环程序设计.ppt
  7. QuickSort 优化后的快速排序算法
  8. springboot(四)——@EnableConfigurationProperties是如何起作用的你知道吗
  9. linux 访问ntfs分区
  10. 【Luogu1345】周游加拿大(动态规划)
  11. 群控系统linux脚本,万能安卓群控脚本助手(安卓群控软件)V1.1 最新版
  12. 定时任务Cron常用表达式与在线生成器
  13. VS2013注册串口active控件mscomm32.ocx
  14. opencv 的norm_OpenCV:norm-范数求解函数
  15. JumpServer页面访问502、504问题记录
  16. matlab的HDLcoder,matlab中hdl coder 的使用
  17. java基于ssm的个人信息保险箱系统
  18. 人工智能初学笔记系列(1):基础概念与进化流程
  19. Ubuntu20.04 向日葵无法被远控的解决办法
  20. 如何判断您是否拥有32位或64位版本的Google Chrome浏览器

热门文章

  1. nyoj 105 九的余数
  2. 航顺HK32F030Mxx官方例程调试笔记(一)
  3. 服务器硬盘分区raid,硬盘分区高手请进!!!
  4. linux 网桥代码分析之网桥及网桥端口的添加与删除Ⅲ
  5. 爬虫爬取京东产品数据
  6. 分布式事务(6)-分布式事务处理技术之RocketMQ
  7. ART虚拟机 | Cleaner机制源码分析
  8. 谈谈引用和Threadlocal的那些事
  9. Qt中使用DirectX
  10. SQLite源代码分析----------分词器③