当前位置:  编程技术>java/j2ee

使用JSP读取客户端信息

    来源: 互联网  发布时间:2014-10-14

    本文导语:  使用JSP读取客户端信息   请阅读以下代码。如果你的使用要求不同,可对这些代码加以很方便的修改。这些代码可以使你获得: 公司company, 用户name,版本version,main version,minor version 操作系统(未完成!),语言language,locale等...

使用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;
}
}




    
 
 

您可能感兴趣的文章:

  • 客户端服务端使用socket通信的send/write最大发送多少?
  • 如何获取客户端浏览器所使用的语言,特别是要区分简繁体!
  • Linux系统做服务器,客户端可使用windows系列的系统吗
  • 如何使用LINUX为不同子网的WIN98客户端不同的应用程序做代理?给分100
  • 如何在java 客户端使用http将cookies 信息发送给服务端.
  • linux客户端能不能使用x界面呀
  • 使用tcp协议发送数据, 如果获得系统底层将包发到客户端之间的耗时?
  • 在linux服务器上面设置squid后怎么设置可以使客户端能使用QQ?
  • 怎么使用outlook一类的客户端接收远程linux的系统邮件
  • 哪里可以下载到, Windows平台下的图形化CVS客户端软件?哪种使用更方便些?
  • DNS服务器端可以使用DNS服务,但客户端无法使用
  • 为什么我装了RedHat Linux 9.0不能在客户端使用telnet?
  • 使用jsp中url跳转时,怎样让它变成乱码使客户端看不到?
  • 请问如何使用c++开发数据库客户端程序?
  • bind函数客户端使用疑问?求解
  • 客户端如果不使用多线程可以实现收发同时进行吗?
  • 如何在redhat linux用小区宽带上网,如何配置,在windows中使用电信的客户端程序来上的
  • 请教高人:同一个套接字(做客户端)连接到server后在不同子进程里使用能否不采取互斥措施收发?
  • 客户端如果不使用多线程可以实现收发同时进行吗? iis7站长之家
  • PHP实例分享判断客户端是否使用代理服务器及其匿名级别
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • linux 下使用 FREETDS 访问数据库 image 字段的问题, 仅能读取 64K ,超出部分读取不到?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 在ACC下不使用循环怎样实现,读取文件指定行的数据.
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 使用shell读取XML文件信息
  • 为什么使用cat输出的文本文件是中文的,使用java从文件读取出来时显示的是乱码?
  • java中使用URL类,读取服务器上的文件返回的中文为什么是乱码?
  • 请教如何使用awk从文件中读取十六进制列的问题
  • linux gdb 没有符号表被读取。请使用 "file" 命令。
  • 使用linq to xml修改app.config示例(linq读取xml)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 怎样在服务器端判断客户使用的浏览器是使用的简体中文的还是英文的还是日文的或者其他的?
  • 服务器端的共享内存可否被远程客户端的进程所挂载使用?
  • 可不可以在程序中直接使用ftp客户端的函数实现文件传输?
  • OpenVPN客户端的使用问题
  • 使用 epoll或poll ,如何确定 与客户端的链接断开 ?
  • 怎么样使用方式applet/servelet从客户端的某个位置将一个文件传输到服务器端
  • 使用非阻塞式IO接收客户数据?
  • 如何处理客户机和服务器使用不同字符集(包括双字节字符)上传或下载文件时文件名的转换问题
  • redhat linux7.3怎么查端口是否已被系统使用啊?? 我正要用ssl的一个代理模块stunnel-4.03,它默认要用443号端口,客户机连接不能通,但改成
  • 我写了一个driver,但每次开机要通过insmod命令才能安装使用,客户要求我写个安装包,一次安装完成。不知各位有何推荐?
  • select客户端的使用
  • 使用jaxws建立webservice客户端并实现soap消息的handler验证示例
  • 多个客户端使用select的FD_ISSET问题
  • 对socket使用select(max_fd,&rd_set,&wr_set,&er_set,&timeout);当服务端断开TCP连接,客户端就会崩溃。怎么解决?谢谢
  • 探讨:使用httpClient在客户端与服务器端传输对象参数的详解
  • 在JSP中使用POST方法传递数据时,如何取得数据来源的服务器地址(非客户地址)???
  • Linux FTP客户端 Lftp 使用方法
  • FTP服务器,客户端使用PASV无法连接上
  • 使用pthread库实现openssl多线程ssl服务端和客户端
  • 集群运维自动化工具ansible之使用playbook安装zabbix客户端
  • Python不使用print而直接输出二进制字符串
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • Office 2010 Module模式下使用VBA Addressof
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • c#中SAPI使用总结——SpVoice的使用方法
  • c/c++预处理命令预#,##使用介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3