使用JSP读取客户端信息
Java  /  管理员 发布于 7年前   200
使用JSP读取客户端信息 
  请阅读以下代码。如果你的使用要求不同,可对这些代码加以很方便的修改。这些代码可以使你获得: 
公司company, 用户name,版本version,main version,minor version 
操作系统(未完成!),语言language,locale等。 
建立一个新的JSP文件: 
请将下列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; 
} 
} 
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
			Copyright·© 2019 侯体宗版权所有·
			粤ICP备20027696号
			
			
