根据请求头获取浏览器类型和操作系统类型工具类

注意:获取请求头可以通过这一行代码:

/** 获取请求头 */
String userAgent = request.getHeader("user-agent");



1、Java Bean 类

package com.yanghui.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;


/**
 * 使用了 Lombok 来节省代码
 * @author YH
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Visit {
    /** 主键ID */
    private Integer id;
    /** IP地址 */
    private String ip;
    /** 请求头 */
    private String userAgent;
    /** 城市 */
    private String city;
    /** 访问地址 */
    private String url;
    /** 浏览器类型 */
    private String browserType;
    /** 操作系统类型 */
    private String platformType;
    /** 访问时间 */
    private Date time;

    public Visit(String browserType, String platformType) {
        this.browserType = browserType;
        this.platformType = platformType;
    }
}




2、工具类代码

package com.yanghui.utils;

import com.yanghui.pojo.Visit;

/** 
 * 根据 user agent string 判断用户的平台、浏览器 
 * 参考资料 
 * ************************************************************************************************************************************************** 
 *  
 * 台式机 
 *  
 * Linux Ubuntu 
 * Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100225 Ubuntu/9.10 (karmic) Namoroka/3.6.2pre 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * Linux Mandriva 2008.1 
 * Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072403 Mandriva/3.0.1-1mdv2008.1 (2008.1) Firefox/3.0.1 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * Linux suSE 10.1 
 * Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060425 SUSE/1.5.0.3-7 Firefox/1.5.0.31 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * Windows XP SP3 
 * Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729) 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * Windows Vista 
 * Mozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 
 * Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729) 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * windows 2000 
 * Mozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.1b2) Gecko/20060821 Firefox/2.0b2 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * Windows 7 
 * Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * Windows Server 2008 
 * Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729) 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * iMac OSX 10.7.4 
 * Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * Mac OS X 
 * Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.9) Gecko/20100824 Firefox/3.6.9 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 *  
 * 手持设备 
 *  
 * iPad 
 * Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * iPad 2 
 * Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X; en-us) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * iPhone 4 
 * Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * iPhone 5 
 * Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 
 * -------------------------------------------------------------------------------------------------------------------------------------------------- 
 * Android 
 * Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 
 * ************************************************************************************************************************************************** 
 * @author YH 
 */  
public class UserAgentUtil {

    /**
     * 根据请求头来判断浏览器类型及操作系统类型
     * @param userAgent 请求头
     * @return
     */
    public static Visit getUserAgent(String userAgent) {
    	if(userAgent==""||userAgent==null){
    		userAgent="";
    	}
        if (userAgent.contains("Windows")) {//主流应用靠前  
        	if (userAgent.contains("Windows NT 10.0")) {//Windows 10
                return judgeBrowser(userAgent, "Windows 10");//判断浏览器  
            } else if (userAgent.contains("Windows NT 6.2")) {//Windows 8  
                return judgeBrowser(userAgent, "Windows 8");//判断浏览器  
            } else if (userAgent.contains("Windows NT 6.1")) {//Windows 7  
                return judgeBrowser(userAgent, "Windows 7" );  
            } else if (userAgent.contains("Windows NT 6.0")) {//Windows Vista  
                return judgeBrowser(userAgent, "Windows Vista");  
            } else if (userAgent.contains("Windows NT 5.2")) {//Windows XP x64 Edition  
                return judgeBrowser(userAgent, "Windows XP");  
            } else if (userAgent.contains("Windows NT 5.1")) {//Windows XP  
                return judgeBrowser(userAgent, "Windows XP");  
            } else if (userAgent.contains("Windows NT 5.01")) {//Windows 2000, Service Pack 1 (SP1)  
                return judgeBrowser(userAgent, "Windows 2000");  
            } else if (userAgent.contains("Windows NT 5.0")) {//Windows 2000  
                return judgeBrowser(userAgent, "Windows 2000");  
            } else if (userAgent.contains("Windows NT 4.0")) {//Microsoft Windows NT 4.0  
                return judgeBrowser(userAgent, "Windows NT 4.0");  
            } else if (userAgent.contains("Windows 98; Win 9x 4.90")) {//Windows Millennium Edition (Windows Me)  
                return judgeBrowser(userAgent, "Windows ME");  
            } else if (userAgent.contains("Windows 98")) {//Windows 98  
                return judgeBrowser(userAgent, "Windows 98");  
            } else if (userAgent.contains("Windows 95")) {//Windows 95  
                return judgeBrowser(userAgent, "Windows 95");  
            } else if (userAgent.contains("Windows CE")) {//Windows CE  
                return judgeBrowser(userAgent, "Windows CE");  
            }   
        } else if (userAgent.contains("Mac OS X")) {  
            if(userAgent.contains("iPhone")){
            	return judgeBrowser(userAgent, "iPhone");
              }
            else if (userAgent.contains("iPad")) {  
                return judgeBrowser(userAgent, "iPad");//判断系统 
            }else{
            	return judgeBrowser(userAgent, "Mac");//判断系统 
            }
        }else if(userAgent.contains("Android")){
        	return judgeBrowser(userAgent, "Android");//判断系统
        }else if(userAgent.contains("Linux")){
        	return judgeBrowser(userAgent, "Linux");//判断系统
        }else if(userAgent.contains("FreeBSD")){
        	return judgeBrowser(userAgent, "FreeBSD");//判断系统
        }else if(userAgent.contains("Solaris")){
        	return judgeBrowser(userAgent, "Solaris");//判断系统
        }
        return judgeBrowser(userAgent, "其他"); 
    }  
      
    private static Visit judgeBrowser(String userAgent, String platformType) {  
    	if (userAgent.contains("Edge")) {
            return new Visit("Microsoft Edge", platformType);  
        }else if(userAgent.contains("QQBrowser")){
        	return new Visit("腾讯浏览器", platformType);
        }else if (userAgent.contains("Chrome")&&userAgent.contains("Safari")) {
            return new Visit("Chrome", platformType);  
        } else if (userAgent.contains("Firefox")) {
            return new Visit("Firefox",platformType);  
        }else if (userAgent.contains("360")) {//Internet Explorer 6  
            return new Visit("360浏览器", platformType);
        }else if (userAgent.contains("Opera")) {//Internet Explorer 6  
            return new Visit("Opera", platformType);
        }else if (userAgent.contains("Safari")&&!userAgent.contains("Chrome")) {//Internet Explorer 6  
            return new Visit("Safari", platformType);
        }else if (userAgent.contains("MetaSr1.0")) {//Internet Explorer 6 
            return new Visit("搜狗浏览器", platformType);
        }else if (userAgent.contains("TencentTraveler")) {//Internet Explorer 6  
            return new Visit("腾讯浏览器", platformType);
        }else if (userAgent.contains("UC")) {//Internet Explorer 6  
            return new Visit("UC浏览器", platformType);
        }else if (userAgent.contains("MSIE")) {
            if (userAgent.contains("MSIE 10.0")) {//Internet Explorer 10  
                return new Visit("IE 10", platformType);  
            } else if (userAgent.contains("MSIE 9.0")) {//Internet Explorer 9  
                return new Visit("IE 9", platformType);  
            } else if (userAgent.contains("MSIE 8.0")) {//Internet Explorer 8  
                return new Visit("IE 8", platformType);  
            } else if (userAgent.contains("MSIE 7.0")) {//Internet Explorer 7  
                return new Visit("IE 7", platformType);  
            } else if (userAgent.contains("MSIE 6.0")) {//Internet Explorer 6  
                return new Visit("IE 6", platformType);
            }  
        } else {//暂时支持以上三个主流.其它浏览器,待续...  
            return new Visit("其他", platformType);  
        }
		return new Visit("其他", platformType);  
    }  
}  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值