请阅读以下代码。如果你的使用要求不同,可对这些代码加以很方便的修改。这些代码可以使你获得: 公司company, 用户name,版本version,main version,minor version 操作系统(未完成!),语言language,locale等。 建立一个新的JSP文件: <%@ page language="java" import="de.hunsicker.http.util.*"%> <% Browser eins = new Browser(request, session); out.println(eins.getVersion()); %> 请将下列class文件加入classpath (你要建立同样的目录结构-- de.hunsicker.http.util,当然也可以自己调节包的名称。!):
-
- package de.hunsicker.http.util;
-
- import java.util.*;
-
- import javax.servlet.*;
- import javax.servlet.http.*;
-
- public class Browser extends HttpServlet
- {
- protected HttpServletRequest request;
- protected HttpSession session;
-
-
-
- protected String userAgent;
- protected String company; // Firmenname des Herstellers
- protected String name; // Bezeichnung des Browsers
- protected String version; // Version
- protected String mainVersion; // Hauptversion
- protected String minorVersion; // Unterversion
- protected String os; // Betriebssystem
- protected String language = "de"; // Sprachcode Standard
- protected Locale locale; // Locale-Objekt mit den aktuellen
- // Spracheinstellungen
-
-
-
- private Hashtable supportedLanguages; // Untersttzte Sprachen
-
-
-
- public Browser(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.setMainVersion();
- this.setMinorVersion();
- this.setOs();
- this.setLanguage();
- this.setLocale();
- }
-
-
-
- public void initialize()
- {
- this.supportedLanguages = new Hashtable(2);
-
-
-
- this.supportedLanguages.put("en", "");
- this.supportedLanguages.put("de", "");
- }
-
-
-
- public void setUserAgent(String httpUserAgent)
- {
- this.userAgent = httpUserAgent.toLowerCase();
- }
-
-
-
- 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";
- }
- }
-
-
-
- /**
- * Liefert den Firmennamen des Herstellers des verwendeten Browsers.
- */
- public String getCompany()
- {
- return this.company;
- }
-
-
-
- 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";
- }
- }
-
-
-
- /**
- * Liefert den Namen des verwendeten Browsers.
- */
- public String getName()
- {
- return this.name;
- }
-
-
-
- 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(" "));
- }
- }
-
-
-
- /**
- * Liefert die Versionsnummer des verwendeten Browsers.
- */
- public String getVersion()
- {
- return this.version;
- }
-
-
-
- private void setMainVersion()
- {
- this.mainVersion = this.version.substring(0, this.version.indexOf("."));
- }
-
-
-
- /**
- * Liefert die Hauptversionsnummer des verwendeten Browsers.
- */
- public String getMainVersion()
- {
- return this.mainVersion;
- }
-
-
-
- private void setMinorVersion()
- {
- this.minorVersion = this.version.substring(this.version.indexOf(".") + 1).trim();
- }
-
-
-
- /**
- * Liefert die Unterversionsnummer des verwendeten Browsers.
- */
- public String getMinorVersion()
- {
- return this.minorVersion;
- }
-
-
-
- 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";
- }
- }
- }
-
-
-
- /**
- * Liefert den Namen des Betriebssystems.
- */
- public String getOs()
- {
- return this.os;
- }
-
-
-
- private void setLanguage()
- {
- String prefLanguage = this.request.getHeader("Accept-Language");
-
-
-
- if (prefLanguage != null)
- {
- String language = null;
- StringTokenizer st = new StringTokenizer(prefLanguage, ",");
-
-
-
- int elements = st.countTokens();
-
-
-
- for (int idx = 0; idx elements; idx++)
- {
- if (this.supportedLanguages.containsKey((language = st.nextToken())))
- {
- this.language = this.parseLocale(language);
- }
- }
- }
- }
-
-
-
- /*
- * Hilfsfunktion fr setLanguage().
- */
- private String parseLocale(String language)
- {
- StringTokenizer st = new StringTokenizer(language, "-");
-
-
-
- if (st.countTokens() == 2)
- {
- return st.nextToken();
- }
- else
- {
- return language;
- }
- }
-
-
-
- /**
- * Liefert das L?nderkürzel der vom Benutzer
- * bevorzugten Sprache.
- */
- public String getLanguage()
- {
- return this.language;
- }
-
-
-
- private void setLocale()
- {
- this.locale = new Locale(this.language, "");
- }
-
-
-
- /**
- * Liefert ein Locale-Objekt mit der Sprach-Prferenz des verwendeten Browsers
- */
- public Locale getLocale()
- {
- return this.locale;
- }
- }
|
|