使用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());  

 

 


宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒
目录
相关文章
|
11天前
|
安全 Java 测试技术
🎉Java零基础:全面解析枚举的强大功能
【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
97 60
|
4天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
11 2
|
5天前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
26 3
|
10天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
22 4
|
9天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
13 1
|
11天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
14天前
|
移动开发 前端开发 JavaScript
java家政系统成品源码的关键特点和技术应用
家政系统成品源码是已开发完成的家政服务管理软件,支持用户注册、登录、管理个人资料,家政人员信息管理,服务项目分类,订单与预约管理,支付集成,评价与反馈,地图定位等功能。适用于各种规模的家政服务公司,采用uniapp、SpringBoot、MySQL等技术栈,确保高效管理和优质用户体验。
|
16天前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
41 1
|
20天前
|
Java 关系型数据库 API
介绍一款Java开发的企业接口管理系统和开放平台
YesApi接口管理平台Java版,基于Spring Boot、Vue.js等技术,提供API接口的快速研发、管理、开放及收费等功能,支持多数据库、Docker部署,适用于企业级PaaS和SaaS平台的二次开发与搭建。
|
存储 自然语言处理 Java
Elasticsearch: java客户端之AdminClient
Elasticsearch: java客户端之AdminClient
160 0