一、原理说明:

 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
用事们的设备测试了下,在以上环境下都成功了。其他环境应该也没有问题。

JAVA EE获取浏览器和操作系统信息的更多相关文章

  1. php获取客户端浏览器以及操作系统信息的方法

    发布:sunday01   来源:net   阅读: 2   [大 中 小] 在较为智能的程序中,php可以获取客户端浏览器及操作系统信息,然后根据浏览器及系统类型,加载不同的页面,以提供更加个性化的 ...

  2. java EE学习之数据库操作

    jdbc开发流程 注册驱动 建立连接(Connection) 创建运行SQL的语句(Statement) 运行语句 处理运行结果(ResultSet) 释放资源 注冊驱动有三种方式: Class.fo ...

  3. Wp-UserAgent——让WordPress在评论后面加上浏览器和操作系统信息

    在很多的博客网站都看到过在评论的后面显示了浏览器和操作系统的信息,网上也用过一些插件,但是都不是很好看,有一次在一个网页上看见了这个评论后面不仅显示了浏览器和操作系统的图片,还有文字信息, 感觉不错, ...

  4. JavaScript获取浏览器信息的方法

    Window有navigator对象让我们得知浏览器的全部信息.我们可以利用一系列的API函数得知浏览器的信息. JavaScript代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 1 ...

  5. java web 获取客户端操作系统信息

    package com.java.basic.pattern; import java.util.regex.Matcher; import java.util.regex.Pattern; /** ...

  6. Java如何获取系统信息(包括操作系统、jvm、cpu、内存、硬盘、网络、io等)

    1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sigar获取系统信息. 下载地址:http://sourceforge ...

  7. 通过Java代码获取系统信息

    在开发中,我们需要获取JVM中的信息,以及操作系统信息,内存信息,CPU信息,磁盘信息,网络信息等,通过Java的API不能获取内存等信息,需要sigar的第三方依赖包. ①:加入依赖 <dep ...

  8. 《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)

    1.简介 在Web自动化的操作中,我们通常需要使用一些方法来操作浏览器,今天就来学习一下.这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解. 2.浏 ...

  9. Eclipse for Java EE软件操作集锦(一)

    以下是我在Java网站开发过程中,关于软件操作Eclipse中,遇到的一些问题并提供了解决方案.一.java web开发使用的集成开发工具是eclipse for Java EE 官方下载地址:htt ...

随机推荐

  1. 【Oracle RAC】Linux系统Oracle11gR2 RAC安装配置详细过程V3.1(图文并茂)

    [Oracle RAC]Linux系统Oracle11gR2 RAC安装配置详细过程V3.1(图文并茂) 2 Oracle11gR2 RAC数据库安装准备工作2.1 安装环境介绍2.2 数据库安装软件 ...

  2. Visual Studio Code-批量添加或删除注释行

    小技巧一例,批量删除Visual Studio code或notepad++注解信息,便于读取有效代码或文本信息,具体操作如下: Visual Studio Code批量删除注解行信息: 在VS Co ...

  3. Visual Studio Code-批量在文末添加文本字段

    小技巧一例,在vs code或notepad++文末批量添加文本字段信息,便于数据信息的完整,具体操作如下: Visual Studio Code批量添加"@azureyun.com&quo ...

  4. Error:"Java patch PatchPasswordEncryption_J10001 is being applied by some other process" when starting Ranger Admin

    SupportKB Problem Description: When starting Ranger admin, it fails to start up with the following e ...

  5. 探索JS引擎工作原理

    JavaScript 从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习 JS 引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.全局对象.执行环境.变量对象.活动对象.作用域和作用 ...

  6. ASP.NET Core 快速入门(实战篇)

    上篇讲了<asp.net core在linux上的环境部署>.今天我们将做几个小玩意实战一下.用到的技术和工具有mysql.websocket.AngleSharp(爬虫html解析).n ...

  7. C# 4.0 的 Visual Studio 2010 示例

    C# 4.0 的 Visual Studio 2010 示例 我们将 C# 示例分为两种不同的类别: 语言示例 LINQ 示例 语言示例 语言示例帮助您熟悉各种 C# 语言功能.这些示例包含在 Lan ...

  8. SUSE12SP3-Mycat(4)rule.xml配置详解

    简介 rule.xml 里面就定义了我们对表进行拆分所涉及到的规则定义.我们可以灵活的对表使用不同的分片算法, 或者对表使用相同的算法但具体的参数不同.这个文件里面主要有 tableRule 和 fu ...

  9. Pytorch中torch.autograd ---backward函数的使用方法详细解析,具体例子分析

    backward函数 官方定义: torch.autograd.backward(tensors, grad_tensors=None, retain_graph=None, create_graph ...

  10. Hangfire源码解析-如何实现可扩展IOC的?

    一.官方描述 These projects simplify the integration between Hangfire and your favorite IoC Container. The ...