public final class InvokeClientUtil {
private InvokeClientUtil() {
}
public static final String UNKOWN_INVOKER = "unknown client";
public static final Pattern IE_REXP = Pattern.compile("msie ([\\d.]+)");
public static final Pattern FIREFOX_REXP = Pattern.compile("firefox/([\\d.]+)");
public static final Pattern CHROME_REXP = Pattern.compile("chrome/([\\d.]+)");
public static final Pattern OPERA_REXP = Pattern.compile("opera.([\\d.]+)");
public static final Pattern SAFARI_REXP = Pattern.compile("version/([\\d.]+).*safari");
public static String getBrowser(String userAgent) {
if (StringUtil.isEmpty(userAgent)) {
throw new NullPointerException("userAgent");
}
String browser = UNKOWN_INVOKER;
String lowerUAgent = userAgent.toLowerCase();
Matcher ieMatcher = IE_REXP.matcher(lowerUAgent);
Matcher ffMatcher = FIREFOX_REXP.matcher(lowerUAgent);
Matcher chMatcher = CHROME_REXP.matcher(lowerUAgent);
Matcher opMatcher = OPERA_REXP.matcher(lowerUAgent);
Matcher saMatcher = SAFARI_REXP.matcher(lowerUAgent);
if (ieMatcher.find()) {
browser = ieMatcher.group();
} else if (ffMatcher.find()) {
browser = ffMatcher.group();
} else if (chMatcher.find()) {
browser = chMatcher.group();
} else if (opMatcher.find()) {
browser = opMatcher.group();
} else if (saMatcher.find()) {
browser = saMatcher.group();
}
return browser;
}
}
//通过消息头获取“User-Ahent”,
// Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22
String us = request.getHeader("User-Agent");
System.out.println(us); System.out.println(InvokeClientUtil.getBrowser(us));