请阅读以下代码。如果你的使用要求不同,可对这些代码加以很方便的修改。这些代码可以使你获得:
公司company,用户name,版本version,mainversion,minorversion
操作系统(未完成!),语言language,locale等。
建立一个新的JSP文件:
请将下列class文件加入classpath(你要建立同样的目录结构--de.hunsicker.http.util,当然也可以自己调节包的名称。!):
packagede.hunsicker.http.util;
importjava.util.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassBrowserextendsHttpServlet
{
protectedHttpServletRequestrequest;
protectedHttpSessionsession;
protectedStringuserAgent;
protectedStringcompany;//FirmennamedesHerstellers
protectedStringname;//BezeichnungdesBrowsers
protectedStringversion;//Version
protectedStringmainVersion;//Hauptversion
protectedStringminorVersion;//Unterversion
protectedStringos;//Betriebssystem
protectedStringlanguage=\"de\";//SprachcodeStandard
protectedLocalelocale;//Locale-Objektmitdenaktuellen
//Spracheinstellungen
privateHashtablesupportedLanguages;//UntersttzteSprachen
publicBrowser(HttpServletRequestrequest,HttpSessionsession)
{
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();
}
publicvoidinitialize()
{
this.supportedLanguages=newHashtable(2);
this.supportedLanguages.put(\"en\",\"\");
this.supportedLanguages.put(\"de\",\"\");
}
publicvoidsetUserAgent(StringhttpUserAgent)
{
this.userAgent=httpUserAgent.toLowerCase();
}
privatevoidsetCompany()
{
if(this.userAgent.indexOf(\"msie\")>-1)
{
this.company=\"Microsoft\";
}
elseif(this.userAgent.indexOf(\"opera\")>-1)
{
this.company=\"OperaSoftware\";
}
elseif(this.userAgent.indexOf(\"mozilla\")>-1)
{
this.company=\"NetscapeCommunications\";
}
else
{
this.company=\"unknown\";
}
}
/**
*LiefertdenFirmennamendesHerstellersdesverwendetenBrowsers.
*/
publicStringgetCompany()
{
returnthis.company;
}
privatevoidsetName()
{
if(this.company==\"Microsoft\")
{
this.name=\"MicrosoftInternetExplorer\";
}
elseif(this.company==\"NetscapeCommunications\")
{
this.name=\"NetscapeNavigator\";
}
elseif(this.company==\"Operasoftware\")
{
this.name=\"OperasoftwareOpera\";
}
else
{
this.name=\"unknown\";
}
}
/**
*LiefertdenNamendesverwendetenBrowsers.
*/
publicStringgetName()
{
returnthis.name;
}
privatevoidsetVersion()
{
inttmpPos;
StringtmpString;
if(this.company==\"Microsoft\")
{
Stringstr=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(\"\"));
}
}
/**
*LiefertdieVersionsnummerdesverwendetenBrowsers.
*/
publicStringgetVersion()
{
returnthis.version;
}
privatevoidsetMainVersion()
{
this.mainVersion=this.version.substring(0,this.version.indexOf(\".\"));
}
/**
*LiefertdieHauptversionsnummerdesverwendetenBrowsers.
*/
publicStringgetMainVersion()
{
returnthis.mainVersion;
}
privatevoidsetMinorVersion()
{
this.minorVersion=this.version.substring(this.version.indexOf(\".\")+1).trim();
}
/**
*LiefertdieUnterversionsnummerdesverwendetenBrowsers.
*/
publicStringgetMinorVersion()
{
returnthis.minorVersion;
}
privatevoidsetOs()
{
if(this.userAgent.indexOf(\"win\")>-1)
{
if(this.userAgent.indexOf(\"windows95\")>-1||this.userAgent.indexOf(\"win95\")>-1)
{
this.os=\"Windows95\";
}
if(this.userAgent.indexOf(\"windows98\")>-1||this.userAgent.indexOf(\"win98\")>-1)
{
this.os=\"Windows98\";
}
if(this.userAgent.indexOf(\"windowsnt\")>-1||this.userAgent.indexOf(\"winnt\")>-1)
{
this.os=\"WindowsNT\";
}
if(this.userAgent.indexOf(\"win16\")>-1||this.userAgent.indexOf(\"windows3.\")>-1)
{
this.os=\"Windows3.x\";
}
}
}
/**
*LiefertdenNamendesBetriebssystems.
*/
publicStringgetOs()
{
returnthis.os;
}
privatevoidsetLanguage()
{
StringprefLanguage=this.request.getHeader(\"Accept-Language\");
if(prefLanguage!=null)
{
Stringlanguage=null;
StringTokenizerst=newStringTokenizer(prefLanguage,\",\");
intelements=st.countTokens();
for(intidx=0;idxelements;idx++)
{
if(this.supportedLanguages.containsKey((language=st.nextToken())))
{
this.language=this.parseLocale(language);
}
}
}
}
/*
*HilfunktionfrsetLanguage().
*/
privateStringparseLocale(Stringlanguage)
{
StringTokenizerst=newStringTokenizer(language,\"-\");
if(st.countTokens()==2)
{
returnst.nextToken();
}
else
{
returnlanguage;
}
}
/**
*LiefertdasL?nderkürzeldervomBenutzer
*bevorzugtenSprache.
*/
publicStringgetLanguage()
{
returnthis.language;
}
privatevoidsetLocale()
{
this.locale=newLocale(this.language,\"\");
}
/**
*LieferteinLocale-ObjektmitderSprach-PrferenzdesverwendetenBrowsers
*/
publicLocalegetLocale()
{
returnthis.locale;
}
}
|