UserAgentUtils使用指南
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地址等信息。以上是部分使用示例,更多详细的使用方法可以查看官方文档。