JSPを使用してクライアント情報を読み取る
著者:Eve Cole
更新時間:2009-07-02 17:13:11
JSPを使用してクライアント情報を読み取る
次のコードを読んでください。使用要件が異なる場合、これらのコードは簡単に変更できます。これらのコードを使用すると、以下を取得できます。
会社名、ユーザー名、バージョン、メインバージョン、マイナーバージョン
オペレーティング システム (未完成!)、言語、ロケールなど。
新しい JSP ファイルを作成します。
次のクラス ファイルをクラスパスに追加してください (同じディレクトリ構造 - de.hunsicker.http.util を作成する必要があります。もちろん、パッケージ名を自分で調整することもできます)。
パッケージ de.hunsicker.http.util;
java.util.* をインポートします。
javax.servlet.* をインポートします。
インポート javax.servlet.http.*;
パブリック クラス ブラウザは HttpServlet を拡張します
{
保護された HttpServletRequest リクエスト。
保護された HttpSession セッション。
protected 文字列 userAgent;
protected String company // 会社名 des Herstellers;
protected 文字列名 // ブラウザの説明
protected String バージョン; // バージョン
protected String mainVersion // Hauptversion;
protected String minerVersion // アンターバージョン;
protected String os; // Betriebssystem;
protected String language = "de" // Sprachcode 標準;
protected Locale locale // Locale-Objekt mit den aktuellen;
// シュプラッヒインステルンゲン
private Hashtable supportLanguages // Untersttzte Sprachen;
パブリックブラウザ(HttpServletRequestリクエスト、HttpSessionセッション)
{
this.initialize();
this.request = リクエスト;
this.session = セッション;
this.setUserAgent(this.request.getHeader("ユーザー エージェント"));
this.setCompany();
this.setName();
this.setVersion();
this.setMainVersion();
this.setMinorVersion();
this.setOs();
this.setLanguage();
this.setLocale();
}
public void 初期化()
{
this.supportedLanguages = 新しいハッシュテーブル(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 = "オペラ ソフトウェア";
}
else if (this.userAgent.indexOf("mozilla") > -1)
{
this.company = "Netscape Communications";
}
それ以外
{
this.company = "不明";
}
}
/**
* ブラウザのブラウザ名。
*/
パブリック String getCompany()
{
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 = "オペラソフトウェア Opera";
}
それ以外
{
this.name = "不明";
}
}
/**
* ブラウザの名称。
*/
パブリック String getName()
{
this.name を返します。
}
private void setVersion()
{
int tmpPos;
文字列 tmpString;
if (this.company == "Microsoft")
{
文字列 str = this.userAgent.substring(this.userAgent.indexOf("msie") + 5);
this.version = str.substring(0, str.indexOf(";"));
}
それ以外
{
tmpString = (this.userAgent.substring(tmpPos = (this.userAgent.indexOf("/")) + 1, tmpPos + this.userAgent.indexOf(" "))).trim();
this.version = tmpString.substring(0, tmpString.indexOf(" "));
}
}
/**
* Liefert はブラウザのバージョン番号を表示します。
*/
パブリック String getVersion()
{
このバージョンを返します。
}
private void setMainVersion()
{
this.mainVersion = this.version.substring(0, this.version.indexOf("."));
}
/**
* Liefert はブラウザーのバージョン番号を表示します。
*/
パブリック String getMainVersion()
{
this.mainVersion を返します。
}
private void setMinorVersion()
{
this.minorVersion = this.version.substring(this.version.indexOf(".") + 1).trim();
}
/**
* Liefert はブラウザーのバージョン番号を表示します。
*/
public String getMinorVersion()
{
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。
*/
パブリック String getOs()
{
this.os を返します。
}
private void setLanguage()
{
String prefLanguage = this.request.getHeader("Accept-Language");
if (prefLanguage != null)
{
文字列言語 = null;
StringTokenizer st = new StringTokenizer(prefLanguage, ",");
int 要素 = st.countTokens();
for (int idx = 0; idx 要素; idx++)
{
if (this.supportedLanguages.containsKey((言語 = st.nextToken())))
{
this. language = this.parseLocale(言語);
}
}
}
}
/*
* setLanguage() の Hilfsfunktion。
*/
private String parseLocale(文字列言語)
{
StringTokenizer st = new StringTokenizer(言語, "-");
if (st.countTokens() == 2)
{
st.nextToken() を返します。
}
それ以外
{
言語を返します。
}
}
/**
* リーフェルト・ダス・レンダーキュルツェル・デア・ヴォム・ベヌツァー
* ベヴォルツークテン シュプラッヘ。
*/
パブリック String getLanguage()
{
この言語を返します。
}
private void setLocale()
{
this.locale = 新しい Locale(this. language, "");
}
/**
* ロケール - オブジェクトの表示 - ブラウザーの優先順位
*/
パブリックロケール getLocale()
{
this.locale を返します。
}
}