Servlet获取客户端浏览器信息和客户端的操作系统

       前两天的项目中需要记录用户的登录信息,希望把用户的浏览器和操作系统等资料记录下来,开始的时候我是通过以下代码获取用户的浏览器和操作系统的。。

     

String Agent = request.getHeader("User-Agent"); 
			StringTokenizer st = new StringTokenizer(Agent,";");
			st.nextToken();
			//得到用户的浏览器名
			String browser = st.nextToken();
			System.out.println("浏览器  "+browser);
			//得到用户的操作系统名
			String os = st.nextToken();
			System.out.println("os  "+os);
			//获得客户端的IP地址
			String ip = "";
				try {
					ip = InetAddress.getLocalHost().getHostAddress(); //ip 地址
				} catch (UnknownHostException e) {
					e.printStackTrace();
				}
			System.out.println("ip   "+ip);

 

输出为

      

浏览器     MSIE 10.0
os   Windows NT 6.1
ip   192.168.5.55


       本以为这样就算完事了,后来用其他浏览器测试,发现只有IE可以。chrome都不行,会报错。FireFox输出一堆奇怪的东西,完全不是我想要的。这完全没法交差啊。然后就只能想其他办法,想了各种办法,最后在网上找到了一个解决办法。 使用UserAgentUtils-1.2.4.jar 包可以实现我需要的功能,而且兼容各个浏览器。。。以下是代码。

    

UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));  
Browser browser = userAgent.getBrowser();
System.out.println("浏览器    "+browser);
OperatingSystem os = userAgent.getOperatingSystem();
System.out.println("os  "+os);
String ip = "";
	try {
	ip = InetAddress.getLocalHost().getHostAddress(); //ip 地址
	} catch (UnknownHostException e) {
		e.printStackTrace();
	}
System.out.println("ip   "+ip);

输出为

浏览器    IE
os  WINDOWS_7
ip   192.168.5.55
浏览器    CHROME
os  WINDOWS_7
ip   192.168.5.55
浏览器    FIREFOX3
os  WINDOWS_7
ip   192.168.5.55


       UserAgentUtils里面封装好了各种方法,只需要直接调用就可以了。。简单粗暴。。完美兼容。确实很厉害啊。。这个还有其他方法,我就没深入研究了,有兴趣的小伙伴可以自己去试试看。。在最后附上jar包的下载地址和我在github上面找到的源码,小伙伴们可以查阅源码学习学习。。

      先附上maven的地址。。


   nl.bitwalker
   UserAgentUtils
   1.2.4

   然后是jar包地址和在github上面找到的UserAgentUtils源码地址  http://download.csdn.net/detail/y353027520dx/8628445
 

你可能感兴趣的:(JAVA)