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/zh-hant/n/148255.html