package com.rambo.tools; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.Hashtable; /** * ClassName: Browser (主要是获取浏览器信息的一段代码,可用于 web 端,获取的信息包括浏览器版本、操作系统) */ @SuppressWarnings("serial") public class BrowserUtil extends HttpServlet { protected HttpServletRequest request; protected HttpSession session; protected String userAgent; protected String company; //开发浏览器公司名称 protected String name; //浏览器名称 protected String version; //浏览器版本号 protected String os; //电脑操作系统版本号 @SuppressWarnings("rawtypes") private Hashtable supportedLanguages; // Untersttzte Sprachen /** * <p>Title: </p> * <p>Description: </p> * param request * param session */ public BrowserUtil(HttpServletRequest request, HttpSession session) { this.initialize(); this.request = request; this.session = session; this.setUserAgent(this.request.getHeader("User-Agent")); this.setCompany(); this.setName(); this.setVersion(); this.setOs(); } /** * Description: TODO(这里用一句话描述这个方法的作用) */ @SuppressWarnings({ "unchecked", "rawtypes" }) public void initialize() { this.supportedLanguages = new Hashtable(2); this.supportedLanguages.put("en", ""); this.supportedLanguages.put("de", ""); } /** * Description: TODO(设置用户的代理) */ public void setUserAgent(String httpUserAgent) { this.userAgent = httpUserAgent.toLowerCase(); } /** * Description: TODO(根据用户浏览器代理,来获取公司) */ private void setCompany() { if (this.userAgent.indexOf("msie") > -1) { this.company = "Microsoft"; } else if (this.userAgent.indexOf("opera") > -1) { this.company = "Opera Software"; } else if (this.userAgent.indexOf("mozilla") > -1) { this.company = "Netscape Communications"; } else { this.company = "unknown"; } } public String getCompany() { return this.company; } /** * Description: 根据公司名称获取用户浏览器名称 */ private void setName() { if (this.company == "Microsoft") { this.name = "Microsoft Internet Explorer"; } else if (this.company == "Netscape Communications") { this.name = "Netscape Navigator"; } else if (this.company == "Operasoftware") { this.name = "Operasoftware Opera"; } else { this.name = "unknown"; } } public String getName() { return this.name; } /** * Description: TODO(这里用一句话描述这个方法的作用) 根据用户代理来获取浏览器版本 * param: TODO (入参描述) * return: TODO (返回类型和参数描述) * date:2015年8月7日下午3:01:54 */ private void setVersion() { int tmpPos; String tmpString; if (this.company == "Microsoft") { String str = this.userAgent.substring(this.userAgent.indexOf("msie") + 5); this.version = str.substring(0, str.indexOf(";")); } else { tmpString = (this.userAgent.substring(tmpPos = (this.userAgent.indexOf("/")) + 1, tmpPos + this.userAgent.indexOf(" "))).trim(); this.version = tmpString.substring(0, tmpString.indexOf(" ")); } } public String getVersion() { return this.version; } /** * Description: TODO(这里用一句话描述这个方法的作用) 根据用户的代理来来来获取操作系统 * param: TODO (入参描述) * return: TODO (返回类型和参数描述) * date:2015年8月7日下午3:02:48 */ private void setOs() { if (this.userAgent.indexOf("win") > -1) { if (this.userAgent.indexOf("windows 95") > -1 || this.userAgent.indexOf("win95") > -1) { this.os = "Windows 95"; } if (this.userAgent.indexOf("windows 98") > -1 || this.userAgent.indexOf("win98") > -1) { this.os = "Windows 98"; } if (this.userAgent.indexOf("windows nt") > -1 || this.userAgent.indexOf("winnt") > -1) { this.os = "Windows NT"; } if (this.userAgent.indexOf("win16") > -1 || this.userAgent.indexOf("windows 3.") > -1) { this.os = "Windows 3.x"; } } } public String getOs() { return this.os; } }