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

package com.java.basic.pattern;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 获取客户端操作系统信息
 * 从http的header中获取到user-agent,然后利用正则表达式判断是哪一种操作系统
 * 
 * 暂只匹配Win 7、WinXP、Win2003、Win2000、MAC、WinNT、Linux、Mac68k、Win9x
 * 
 * @param userAgent request.getHeader("user-agent")的返回值
 * 
 * @author 
 *
 */
public class ClientOS {
    
    private static final String USER_AGENT = "";
    
    public static void main(String[] args) {
        String clientOS = getClientOS(USER_AGENT);
        
    }
    
    public static String getClientOS(String userAgent){
        String cos = "unknow os";
        
        Pattern p = Pattern.compile(".*(Windows NT 6\\.1).*");
        Matcher m = p.matcher(userAgent);
        if(m.find()){
            cos = "Windows7";
            return cos;
        }
        
        p = Pattern.compile(".*(Windows NT 5\\.1|Windows XP).*");
        m = p.matcher(userAgent);
        if(m.find()){
            cos = "WinXP";
            return cos;
        }
        
        p = Pattern.compile(".*(Windows NT 5\\.2).*");
        m = p.matcher(userAgent);
        if(m.find()){
            cos = "Win2003";
            return cos;
        }
        
        p = Pattern.compile(".*(Win2000|Windows 2000|Windows NT 5\\.0).*");
        m = p.matcher(userAgent);
        if(m.find()){
            cos = "Win2000";
            return cos;
        }
        
        p = Pattern.compile(".*(Mac|apple|MacOS8).*");
        m = p.matcher(userAgent);
        if(m.find()){
            cos = "MAC";
            return cos;
        }
        
        p = Pattern.compile(".*(WinNT|WindowsNT).*");
        m = p.matcher(userAgent);
        if(m.find()){
            cos = "WinNT";
            return cos;
        }
        
        p = Pattern.compile(".*Linux.*");
        if(m.find()){
            cos = "Linux";
            return cos;
        }
        
        p = Pattern.compile(".*68k|68000.*");
        m = p.matcher(userAgent);
        if(m.find()){
            cos = "Mac68k";
            return cos;
        }
        
        p = Pattern.compile(".*(9x 4.90|Win9(5|8)|Windows 9(5|8)|95/NT|Win32|32bit).*");
        m = p.matcher(userAgent);
        if(m.find()){
            cos = "Win9x";
            return cos;
        }
        
        return cos;
    }
    
    
    
}
View Code

 

posted @ 2016-03-29 16:06  人,总要有点追求的  阅读(3248)  评论(0编辑  收藏  举报