JSP를 사용하여 클라이언트 정보 읽기
저자:Eve Cole
업데이트 시간:2009-07-02 17:13:11
JSP를 사용하여 클라이언트 정보 읽기
다음 코드를 읽어보세요. 사용 요구 사항이 다른 경우 이러한 코드를 쉽게 수정할 수 있습니다. 이 코드를 사용하면 다음을 얻을 수 있습니다.
회사 회사, 사용자 이름, 버전, 메인 버전, 마이너 버전
운영 체제(완료되지 않음!), 언어, 로케일 등
새 JSP 파일을 만듭니다.
다음 클래스 파일을 클래스 경로에 추가하십시오(동일한 디렉터리 구조(de.hunsicker.http.util을 만들어야 함). 물론 패키지 이름을 직접 조정할 수도 있습니다!):
패키지 de.hunsicker.http.util;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
공개 클래스 브라우저는 HttpServlet을 확장합니다.
{
보호된 HttpServletRequest 요청;
보호된 HttpSession 세션;
protected String userAgent;
보호받는 문자열 회사 // Firmenname des Herstellers
protected String name; // 브라우저 검색
보호된 문자열 버전;
protected String mainVersion; // Hauptversion;
protected String majorVersion;
보호된 문자열 os; // Betriebssystem
protected String 언어 = "de" // Sprachcode 표준
protected Locale locale; // Locale-Objekt mit den aktuellen
// Spracheinstellungen
개인 해시 테이블 지원 언어 // Untersttzte Sprachen
공용 브라우저(HttpServletRequest 요청, HttpSession 세션)
{
this.initialize();
this.request = 요청;
this.session = 세션;
this.setUserAgent(this.request.getHeader("User-Agent"));
this.setCompany();
this.setName();
this.setVersion();
this.setMainVersion();
this.setMinorVersion();
this.setOs();
this.setLanguage();
this.setLocale();
}
공개 무효 초기화()
{
this.supportedLanguages = new Hashtable(2);
this.supportedLanguages.put("en", "");
this.supportedLanguages.put("de", "");
}
공공 무효 setUserAgent(문자열 httpUserAgent)
{
this.userAgent = httpUserAgent.toLowerCase();
}
개인 무효 setCompany()
{
if (this.userAgent.indexOf("msie") > -1)
{
this.company = "마이크로소프트";
}
else if (this.userAgent.indexOf("opera") > -1)
{
this.company = "오페라 소프트웨어";
}
else if (this.userAgent.indexOf("mozilla") > -1)
{
this.company = "넷스케이프 커뮤니케이션즈";
}
또 다른
{
this.company = "알 수 없음";
}
}
/**
* Liefert den Firmennamen des Herstellers des verwendeten Browsers.
*/
공개 문자열 getCompany()
{
this.company를 반환합니다.
}
개인 무효 setName()
{
if (this.company == "Microsoft")
{
this.name = "마이크로소프트 인터넷 익스플로러";
}
else if (this.company == "Netscape Communications")
{
this.name = "넷스케이프 네비게이터";
}
else if (this.company == "Operasoftware")
{
this.name = "Operasoftware 오페라";
}
또 다른
{
this.name = "알 수 없음";
}
}
/**
* 최신 브라우저의 Liefert den Namen des.
*/
공개 문자열 getName()
{
this.name을 반환합니다.
}
개인 무효 setVersion()
{
int tmpPos;
문자열 tmpString;
if (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()
{
this.version을 반환합니다.
}
개인 무효 setMainVersion()
{
this.mainVersion = this.version.substring(0, this.version.indexOf("."));
}
/**
* 최신 브라우저의 Hauptversionsnummer des verwendeten이 있습니다.
*/
공개 문자열 getMainVersion()
{
this.mainVersion을 반환합니다.
}
개인 무효 setMinorVersion()
{
this.minorVersion = this.version.substring(this.version.indexOf(".") + 1).trim();
}
/**
* 브라우저의 Unterversionsnummer des verwendeten을 선택하세요.
*/
공개 문자열 getMinorVersion()
{
this.minorVersion을 반환합니다.
}
개인 무효 setOs()
{
if (this.userAgent.indexOf("win") > -1)
{
if (this.userAgent.indexOf("windows 95") > -1 || this.userAgent.indexOf("win95") > -1)
{
this.os = "윈도우 95";
}
if (this.userAgent.indexOf("windows 98") > -1 || this.userAgent.indexOf("win98") > -1)
{
this.os = "윈도우 98";
}
if (this.userAgent.indexOf("windows nt") > -1 || this.userAgent.indexOf("winnt") > -1)
{
this.os = "윈도우 NT";
}
if (this.userAgent.indexOf("win16") > -1 || this.userAgent.indexOf("windows 3.") > -1)
{
this.os = "윈도우 3.x";
}
}
}
/**
* Liefert den Namen des Betriebssystems.
*/
공개 문자열 getOs()
{
this.os를 반환합니다.
}
개인 무효 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.언어 = this.parseLocale(언어);
}
}
}
}
/*
* Hilfsfunktion fr setLanguage().
*/
개인용 문자열parseLocale(문자열 언어)
{
StringTokenizer st = new StringTokenizer(언어, "-");
if (st.countTokens() == 2)
{
st.nextToken()을 반환합니다.
}
또 다른
{
반환 언어;
}
}
/**
* Liefert das Lönderkürzel der vom Benutzer
* bevorzugten Sprache.
*/
공개 문자열 getLanguage()
{
this.언어를 반환합니다;
}
개인 무효 setLocale()
{
this.locale = 새 로케일(this.언어, "");
}
/**
* 브라우저에 대한 Sprach-Prferenz의 Locale-Objekt에 대한 정보
*/
공개 로케일 getLocale()
{
this.locale을 반환합니다.
}
}