Используйте 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.*;
Публичный класс Browser расширяет HttpServlet
{
защищенный запрос HttpServletRequest;
защищенный сеанс HttpSession;
защищенная строка userAgent;
защищенная компания String // Firmenname des Herstellers;
защищенное имя строки // Управление браузерами;
защищенная строковая версия // Версия;
защищенная строка mainVersion // Hauptversion;
защищенная строка minorVersion // Unterversion;
защищенная строка os // Betriebssystem;
protected String Language = "de" // Стандарт Sprachcode;
защищенный локаль locale // Locale-Object mit den aktuellen;
// Spracheinstellungen
частная хэш-таблица поддерживает языки // Untersttzte Sprachen;
общедоступный браузер (запрос HttpServletRequest, сеанс HttpSession)
{
это.инициализация();
this.request = запрос;
this.session = сеанс;
this.setUserAgent(this.request.getHeader("User-Agent"));
эта.setCompany();
это.setName();
this.setVersion();
this.setMainVersion();
this.setMinorVersion();
это.setOs();
this.setLanguage();
это.setLocale();
}
публичная недействительная инициализация()
{
this.supportedLanguages = новая Hashtable(2);
this.supportedLanguages.put("en", "");
this.supportedLanguages.put("de", "");
}
public void setUserAgent (String httpUserAgent)
{
this.userAgent = httpUserAgent.toLowerCase();
}
частная пустота setCompany()
{
if (this.userAgent.indexOf("msie") > -1)
{
this.company = "Майкрософт";
}
иначе если (this.userAgent.indexOf("opera") > -1)
{
this.company = «Программное обеспечение Opera»;
}
иначе если (this.userAgent.indexOf("mozilla") > -1)
{
this.company = "Netscape Communications";
}
еще
{
this.company = "неизвестно";
}
}
/**
* Уведомление о фирменных названиях популярных браузеров.
*/
публичная строка getCompany()
{
вернуть эту.компанию;
}
частная пустота setName()
{
если (this.company == "Microsoft")
{
this.name = "Microsoft Internet Explorer";
}
иначе если (this.company == "Netscape Communications")
{
this.name = "Netscape Navigator";
}
иначе если (this.company == "Operasoftware")
{
this.name = "Оперное программное обеспечение Opera";
}
еще
{
this.name = "неизвестно";
}
}
/**
* Сохранение названий браузеров.
*/
общедоступная строка getName()
{
вернуть это.имя;
}
частная пустота setVersion()
{
интервал tmpPos;
Строка tmpString;
если (this.company == "Microsoft")
{
String 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(" ");
}
}
/**
* Указан номер версии поддерживаемых браузеров.
*/
публичная строка getVersion()
{
вернуть эту версию;
}
частная пустота setMainVersion()
{
this.mainVersion = this.version.substring(0, this.version.indexOf("."));
}
/**
* Номер основной версии поддерживаемых браузеров.
*/
публичная строка getMainVersion()
{
верните this.mainVersion;
}
частная пустота setMinorVersion()
{
this.minorVersion = this.version.substring(this.version.indexOf(".") + 1).trim();
}
/**
* Укажите номер версии поддерживаемых браузеров.
*/
публичная строка getMinorVersion()
{
вернуть this.minorVersion;
}
частная пустота 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.
*/
публичная строка getOs()
{
вернуть this.os;
}
частная пустота setLanguage()
{
String prefLanguage = this.request.getHeader("Accept-Language");
если (prefLanguage != ноль)
{
Строковый язык = ноль;
StringTokenizer st = новый StringTokenizer(prefLanguage, ",");
int elements = st.countTokens();
for (int idx = 0; элементы idx; idx++)
{
if (this.supportedLanguages.containsKey((language = st.nextToken())))
{
this.language = this.parseLocale(язык);
}
}
}
}
/*
* Hilfsfunktion для setLanguage().
*/
частный String parseLocale (строковый язык)
{
StringTokenizer st = новый StringTokenizer(язык, "-");
если (st.countTokens() == 2)
{
вернуть st.nextToken();
}
еще
{
возврат языка;
}
}
/**
* Liefert das Lönderkürzel der vom Benutzer
* bevorzugten Sprache.
*/
публичная строка getLanguage()
{
вернуть этот.язык;
}
частная пустота setLocale()
{
this.locale = новая локаль(this.language, "");
}
/**
* Liefert ein Locale-Objekt mit der Sprach-Prferenz des verwendeten Browsers.
*/
общедоступная локаль getLocale()
{
вернуть this.locale;
}
}