使用Java实现B/S系统常见的获取客户端信息功能!

简介: 写B/S系统的时候,获取并将每个客户的信息保存起来,对于以后的维护和优化可以更有目的性 可以知道使用系统的用户中,使用最多的是哪种版本的浏览器,然后可以有针对性的,将系统兼容性尽量提高! 以下是工具类(ClientInfo.

写B/S系统的时候,获取并将每个客户的信息保存起来,对于以后的维护和优化可以更有目的性

可以知道使用系统的用户中,使用最多的是哪种版本的浏览器,然后可以有针对性的,将系统兼容性尽量提高!

以下是工具类(ClientInfo.java):

 

 1  package  com.ITPlus.tools;   
 2    
 3    import  java.util.regex.Matcher;   
 4    import  java.util.regex.Pattern;   
 5    
 6    /*   
 7   * 返回客户端信息工具类  
 8   * by netwild  
 9    */    
10    public   class  ClientInfo {   
11    
12       private  String info  =   "" ;   
13       private  String explorerVer  =   " 未知 " ;   
14       private  String OSVer  =   " 未知 " ;   
15    
16       /*   
17       * 构造函数  
18       * 参数:String request.getHeader("user-agent")  
19       *   
20       * IE7:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)  
21       * IE8:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)  
22       * Maxthon:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; Maxthon 2.0)  
23       * firefox:Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11  
24       * Chrome:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7  
25       * Opera:Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.30 Version/10.63  
26       *   
27       * 操作系统:  
28       * Win7 : Windows NT 6.1  
29       * WinXP : Windows NT 5.1  
30        */    
31       public  ClientInfo(String info){   
32           this .info  =  info;   
33      }   
34    
35       /*   
36       * 获取核心浏览器名称  
37        */    
38       public  String getExplorerName(){   
39          String str  =   " 未知 " ;   
40          Pattern pattern  =  Pattern.compile( "" );   
41          Matcher matcher;   
42           if (info.indexOf( " MSIE " !=   - 1 ){   
43              str  =   " MSIE " // 微软IE   
44                pattern  =  Pattern.compile(str  +   " \\s([0-9.]+) " );   
45          } else   if (info.indexOf( " Firefox " !=   - 1 ){   
46              str  =   " Firefox " // 火狐   
47                pattern  =  Pattern.compile(str  +   " \\/([0-9.]+) " );   
48          } else   if (info.indexOf( " Chrome " !=   - 1 ){   
49              str  =   " Chrome " // Google   
50              pattern  =  Pattern.compile(str  +   " \\/([0-9.]+) " );   
51          } else   if (info.indexOf( " Opera " !=   - 1 ){   
52              str  =   " Opera " // Opera   
53              pattern  =  Pattern.compile( " Version\\/([0-9.]+) " );   
54          }   
55          matcher  =  pattern.matcher(info);   
56           if (matcher.find()) explorerVer  =  matcher.group( 1 );   
57           return  str;   
58      }   
59    
60       /*   
61       * 获取核心浏览器版本  
62        */    
63       public  String getExplorerVer(){   
64           return   this .explorerVer;   
65      }   
66    
67       /*   
68       * 获取浏览器插件名称(例如:遨游、世界之窗等)  
69        */    
70       public  String getExplorerPlug(){   
71          String str  =   " " ;   
72           if (info.indexOf( " Maxthon " !=   - 1 )   
73              str  =   " Maxthon " // 遨游   
74           return  str;    
75      }   
76         
77       /*   
78       * 获取操作系统名称  
79        */    
80       public  String getOSName(){   
81          String str  =   " 未知 " ;   
82          Pattern pattern  =  Pattern.compile( "" );   
83          Matcher matcher;   
84           if (info.indexOf( " Windows " !=   - 1 ){   
85              str  =   " Windows " // Windows NT 6.1   
86              pattern  =  Pattern.compile(str  +   " \\s([a-zA-Z0-9]+\\s[0-9.]+) " );   
87          }   
88          matcher  =  pattern.matcher(info);   
89           if (matcher.find()) OSVer  =  matcher.group( 1 );   
90           return  str;    
91      }   
92         
93       /*   
94       * 获取操作系统版本  
95        */    
96       public  String getOSVer(){   
97           return   this .OSVer;   
98      }   
99  }   

 

 

调用方式:

 

1  // 初始化ClientInfo对象,唯一的参数:request.getHeader("user-agent")   
2  ClientInfo clientInfo  =   new  ClientInfo(request.getHeader( " user-agent " ));   
3  // 获取核心浏览器名称并保存到登录信息对象(loginlog)的相应属性中   
4  loginlog.setExplorerName(clientInfo.getExplorerName());   
5  loginlog.setExplorerVer(clientInfo.getExplorerVer());   
6  loginlog.setExplorerPlug(clientInfo.getExplorerPlug());   
7  loginlog.setOsname(clientInfo.getOSName());   
8  loginlog.setOsver(clientInfo.getOSVer());  

 

 


宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒
目录
相关文章
|
2月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
265 8
|
2月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
211 24
|
2月前
|
安全 前端开发 Java
使用Java编写UDP协议的简易群聊系统
通过这个基础框架,你可以进一步增加更多的功能,例如用户认证、消息格式化、更复杂的客户端界面等,来丰富你的群聊系统。
171 11
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
Java与生成式AI:构建内容生成与创意辅助系统
生成式AI正在重塑内容创作、软件开发和创意设计的方式。本文深入探讨如何在Java生态中构建支持文本、图像、代码等多种生成任务的创意辅助系统。我们将完整展示集成大型生成模型(如GPT、Stable Diffusion)、处理生成任务队列、优化生成结果以及构建企业级生成式AI应用的全流程,为Java开发者提供构建下一代创意辅助系统的完整技术方案。
211 10
|
2月前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
416 4
|
2月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
334 0
|
3月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
存储 自然语言处理 Java
Elasticsearch: java客户端之AdminClient
Elasticsearch: java客户端之AdminClient
|
存储 自然语言处理 Java
Elasticsearch: java客户端之AdminClient
Elasticsearch: java客户端之AdminClient
Elasticsearch: java客户端之AdminClient
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
177 2