一、原理说明:
1. 浏览器访问服务端时,Http请求头上会带上客户端一些信息,可通过“user-agent”获取。
//java获取方法如下,其他语言也有自己获取方法
String agentStr = request.getHeader("user-agent");
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36
2. 一般的方法是通过正则表达式解析字符串获取,在此我们直接使用第三方类库UserAgentUtils获取。
二、准备工作(下载依赖jar文件)
1. 访问http://mvnrepository.com/
2. 搜索“UserAgentUtils”
这里我们下载第二个,2014年更新的。如果使用第一个,用IE11访问时,无法获取浏览器类型。
IE11于2013年11月07日随Windows8.1发行。
三、编写测试代码
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String agentStr = request.getHeader("user-agent");
System.out.println(agentStr);
UserAgent agent = UserAgent.parseUserAgentString(agentStr);
//浏览器
Browser browser = agent.getBrowser();
System.out.println("类型:"+browser.getBrowserType()+
"\n名称:"+browser.getName()+
"\n厂商:"+browser.getManufacturer()+
"\n产品系列:"+browser.getGroup()+
"\n引擎:"+browser.getRenderingEngine()); //浏览器版本
Version version = agent.getBrowserVersion();
System.out.println("========================");
System.out.println("主版本:"+version.getMajorVersion()+
"\n小版本:"+version.getMinorVersion()+
"\n完整版本:"+version.getVersion());
//操作系统
System.out.println("========================");
OperatingSystem os = agent.getOperatingSystem();
System.out.println("名称:"+os.getName()+
"\n设备类型:"+os.getDeviceType()+
"\n产品系列:"+os.getGroup()+
"\n生成厂商:"+os.getManufacturer());
}
四、测试
测试报告:
操作系统:windowsXP、windows7、windows8.1、MAC OS X、android4.4
浏览器:IE7、IE8、IE11、Firefox、Chrome
用事们的设备测试了下,在以上环境下都成功了。其他环境应该也没有问题。