最近把火狐浏览器的版本升级到了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这类浏览器要如何做去条件判断呢?而且浏览器的不同版这样的请求头也是存在差异的,应该怎么来样来处理这样的问题?求高人指点?先谢谢了。
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这类浏览器要如何做去条件判断呢?而且浏览器的不同版这样的请求头也是存在差异的,应该怎么来样来处理这样的问题?求高人指点?先谢谢了。
解决方案 »
- 触发器的问题!
- hello,我想问个啊,有个jsp页面连接到一个servlet,如何在servlet里得到这个jsp的文件名或路径
- form提交,链接请求,都自动刷新两次。找不到错误错在!
- 解决Struts乱码问题报错。只有这么多分了,解决后立刻给分
- 整合 IIS 和Tomcat有哪些好处?
- JfreeChart中如何在曲线图上显示没个月份对应的值
- 求用JSP,JAVABEAN,SQLSERVER2000制作一个动态树的实例
- 请教jsp+servlet+bean的开发模式,servlet如何与jsp交互?附测试代码。
- 树结构代码!
- 如何实时的判断用户是在线还是离线?
- webservices返回一个List类型该怎么办?
- 询问一个关于struts2upload文件为tmp类型的问题
if (ua.indexOf("Windows"));
if (ua.indexOf("MSIE"));比较土,不过实行起来简单。