使用JSP读取客户端信息_MySQL
作者:手机用户2602915205 | 来源:互联网 | 2018-04-20 13:33
请阅读以下代码。如果你的使用要求不同,可对这些代码加以很方便的修改。这些代码可以使你获得:公司company,用户name,版本version,mainversion,minorversion操作系统(未完成!),语言language,locale等。建立一个新的JSP文件:请将下列class文件加入classpat
请阅读以下代码。如果你的使用要求不同,可对这些代码加以很方便的修改。这些代码可以使你获得:
公司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\"));
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;
}
}
推荐阅读
-
小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ...
[详细]
蜡笔小新 2024-12-22 13:59:04
-
本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ...
[详细]
蜡笔小新 2024-12-22 13:38:48
-
-
本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ...
[详细]
蜡笔小新 2024-12-22 13:22:19
-
许多用户在使用Windows 10系统时,经常会遇到开机时自动进行磁盘检查的情况。这不仅影响了开机速度,还可能带来不必要的麻烦。本文将详细介绍如何通过简单的注册表修改来避免每次开机时的磁盘自检,提升系统启动效率。 ...
[详细]
蜡笔小新 2024-12-22 13:35:42
-
金山WPS作为国产办公软件中的佼佼者,以其与Office相似的界面和功能广受用户喜爱。然而,随着时间的推移,一些早期版本中的独特功能逐渐被忽视。本文将带您回顾并重新发现这些曾经便捷且实用的功能。 ...
[详细]
蜡笔小新 2024-12-22 12:39:09
-
对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ...
[详细]
蜡笔小新 2024-12-22 11:02:41
-
本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ...
[详细]
蜡笔小新 2024-12-22 10:35:47
-
本文探讨了在构建应用程序时,如何对不同类型的数据进行结构化设计。主要分为三类:全局配置、用户个人设置和用户关系链。每种类型的数据都有其独特的用途和应用场景,合理规划这些数据结构有助于提升用户体验和系统的可维护性。 ...
[详细]
蜡笔小新 2024-12-22 09:42:30
-
在Windows 10系统中安装TortoiseSVN 1.11.1时,可能会遇到错误代码2503。此问题通常与系统权限设置或安装程序的执行环境有关。本文将详细介绍导致该错误的原因,并提供有效的解决方案。 ...
[详细]
蜡笔小新 2024-12-22 08:31:41
-
如何使用Ping命令来测试网络连接?当网卡安装和有关参数配置完成后,可以使用ping命令来测试一下网络是否连接成功。以winXP为例1、打开XP下DOS窗口具体操作是点击“开始”菜 ...
[详细]
蜡笔小新 2024-12-22 07:41:31
-
yum俗称大黄狗作用:解决安装软件包的依赖关系当安装依赖关系的软件包时,会将依赖的软件包一起安装。本地yum:需要yum源,光驱挂载。yum源:(刚开始查看yum源中的内容就是上图 ...
[详细]
蜡笔小新 2024-12-22 07:41:00
-
本文探讨了如何解决PHP文件无法写入本地文件的问题,并解释了PHP文件中HTML代码无效的原因,提供了一系列实用的解决方案和最佳实践。 ...
[详细]
蜡笔小新 2024-12-22 07:18:12
-
概述–提示:指启示,提起注意或给予提醒和解释。在excel中会经常用到给某个格子增加提醒信息,比如金额提示输入数值或最大长度值等等。设置方式也有多种,简单的,仅为单元格插入批注就可 ...
[详细]
蜡笔小新 2024-12-22 06:20:26
-
本文详细探讨了如何通过分析单个或多个线程在瓶颈情况下的表现,来了解处理器资源的消耗。无论是单进程还是多进程环境,监控关键指标如线程数量、占用时间及调度优先级等,有助于揭示潜在的性能问题。 ...
[详细]
蜡笔小新 2024-12-21 20:47:03
-
本项目包含完整的源代码、设计文档、数据库结构以及详细的安装指南,旨在为计算机专业的学生提供一个全面的心理健康管理系统解决方案。 ...
[详细]
蜡笔小新 2024-12-21 19:57:18
-
手机用户2602915205
这个家伙很懒,什么也没留下!