request.getHeader("user-agent");这一方法得到的结果如何来获取浏...

t150ckh 发布于 2011/05/11 15:35
阅读 4K+
收藏 2

最近把火狐浏览器的版本升级到了4.0.1这个版本,发现之前用到的下面这段代码解决不了获取浏览器和操作系统。

先看原码:

String agent = request.getHeader("user-agent");

StringTokenizer st = new StringTokenizer(agent, ";");

st.nextToken();

String userBrowser = st.nextToken();// 得到用户的浏览器名

String userOS = st.nextToken();// 得到用户的操作系统名

看了下StringTokenizer类作用是字符串分隔解析类型,因此把不同的浏览器得到值进行了一下对比,结果如下:

浏览器名 版本号 请求头的值        
IE5   Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; SV1)        
IE6 6.0.2900.5512 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)        
IE7   Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)        
IE8 8.0.6001.18702 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1)        
IE9 9.0.8112.16421 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)        
TT浏览器 4.8 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler 4.0)        
世界之窗 3.4.0.5 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TheWorld)        
             
火狐 4.0.1 Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1        
             
谷歌 10.0.648.204 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16        
谷歌 11.0.696.60 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.60 Safari/534.24        
             
Safari 5.0.5 Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1        
             
360极速版 4.0.3.416 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10        
             
Opera 11.01 Opera/9.80 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.7.62 Version/11.01        

 

发现上面的方法只能针对IE内核的浏览器才有效,谷歌、火狐、safari、opera这类浏览器要如何做去条件判断呢?而且浏览器的不同版这样的请求头也是存在差异的,应该怎么来样来处理这样的问题?求高人指点?先谢谢了。

加载中
0
t150ckh
t150ckh

怎么都没有遇到这类问题?还是说这个问题太简单了。不知道各位前辈们有什么比较好解决方案没有?

0
t150ckh
t150ckh

 求救红薯大哥。

0
红薯
红薯

没搞过啊,咱都是用 awstats 来对 accesslog 做分析的。

不过 velocity tools 这个项目有一个工具类叫 BrowserSnifferTool 是用来解析这些数据的,你可以去下载一个来看看

0
t150ckh
t150ckh

非常感谢红薯大哥的指点。

0
苏珊大妈
苏珊大妈

BrowserSnifferTool这个工具类现在以过期了。建议直接看org.apache.velocity.tools.view.BrowserTool

0
t150ckh
t150ckh

引用来自#6楼“苏珊大妈”的帖子

BrowserSnifferTool这个工具类现在以过期了。建议直接看org.apache.velocity.tools.view.BrowserTool

看了下里面的原码,这其中没有一个方法会返回当前用户的浏览类型及操作系统。 这里似乎更注重浏览器的版本号。该如何来做呢?

返回顶部
顶部