UserAgentUtils是Java Web项目中一个非常常用的工具库,用于解析用户浏览器的User-Agent字符串,以获取所访问的设备类型、操作系统类型和版本、浏览器类型和版本等信息。
一、获取设备类型
UserAgentUtils可以解析出访问者使用的设备类型,如PC、手机、平板等。首先,我们需要获取HttpServletRequest对象,然后使用UserAgentUtils进行解析,示例如下:
/** * 获取设备类型 * * @param request * @return */ public static DeviceTypeEnum getDeviceType(HttpServletRequest request) { String userAgantStr = request.getHeader("User-Agent"); UserAgent userAgent = UserAgent.parseUserAgentString(userAgantStr); if (userAgent.getOperatingSystem().getDeviceType() == DeviceType.MOBILE) { return DeviceTypeEnum.MOBILE; } else if (userAgent.getOperatingSystem().getDeviceType() == DeviceType.TABLET) { return DeviceTypeEnum.TABLET; } else { return DeviceTypeEnum.PC; } }
二、获取操作系统类型和版本
UserAgentUtils还可以解析出所访问的设备的操作系统和版本信息。示例如下:
/** * 获取操作系统类型和版本 * * @param request * @return */ public static String getOsNameAndVersion(HttpServletRequest request) { String userAgantStr = request.getHeader("User-Agent"); UserAgent userAgent = UserAgent.parseUserAgentString(userAgantStr); OperatingSystem os = userAgent.getOperatingSystem(); String osName = os.getName(); if (osName.contains("Windows")) { OperatingSystemVersion version = os.getVersion(); osName = osName + " " + version; } return osName; }
三、获取浏览器类型和版本
UserAgentUtils可以非常方便地解析出所访问的设备使用的浏览器类型和版本信息。示例如下:
/** * 获取浏览器类型和版本 * * @param request * @return */ public static String getBrowserNameAndVersion(HttpServletRequest request) { String userAgantStr = request.getHeader("User-Agent"); UserAgent userAgent = UserAgent.parseUserAgentString(userAgantStr); Browser browser = userAgent.getBrowser(); String browserName = browser.getName(); if (browser.getBrowserType() == BrowserType.WEB_BROWSER) { Version version = userAgent.getBrowserVersion(); browserName = browserName + " " + version; } return browserName; }
四、获取其他信息
UserAgentUtils还可以获取本机的一些信息,如IP地址、MAC地址等。示例如下:
/** * 获取IP地址 * * @param request * @return */ public static String getIpAddr(HttpServletRequest request) { 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("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } /** * 获取MAC地址 * * @param ip * @return */ public static String getMacAddr(String ip) { String mac = ""; try { Process process = Runtime.getRuntime().exec("arp -a " + ip); InputStreamReader ir = new InputStreamReader(process.getInputStream()); LineNumberReader input = new LineNumberReader(ir); process.waitFor(); String line; while ((line = input.readLine()) != null) { line = line.trim(); if (line.startsWith(ip)) { mac = line.substring(line.indexOf('-') - 2, line.indexOf('-') + 14); } } } catch (Exception ex) { ex.printStackTrace(); } return mac; }
五、小结
UserAgentUtils是解析用户浏览器信息的一个非常方便的工具类,可以获取到如设备类型、操作系统类型和版本、浏览器类型和版本、IP地址、MAC地址等信息。以上是部分使用示例,更多详细的使用方法可以查看官方文档。
原创文章,作者:FCFY,如若转载,请注明出处:https://www.506064.com/n/148255.html