成都网站创建厂房装修东莞网站建设
成都网站创建,厂房装修东莞网站建设,团购的网站扣佣金分录怎么做,网页模板下载了如何修改使用?项目背景 原有的启动平台公共组件库comm-util的浏览器工具类BrowserUtils是基于UserAgentUtils的#xff0c;但是该项目最后一个版本发布于 2018/01/24#xff0c;之至今日23年底#xff0c;已有5年没有维护更新#xff0c;会造成最新版本的部分浏览器不能正确获取到浏览器…项目背景 原有的启动平台公共组件库comm-util的浏览器工具类BrowserUtils是基于UserAgentUtils的但是该项目最后一个版本发布于 2018/01/24之至今日23年底已有5年没有维护更新会造成最新版本的部分浏览器不能正确获取到浏览器信息。至于为什么停更了获取不到最新浏览器和操作系统信息了呢文末给大家揭晓。以至于公司的项目组团队不得已去寻找其他解决方案做该工具类的优化更新。于是我们来到的项目官网看到了官方公告也提示项目已停止更新官方建议使用Browscap做代替。 开始改造 1、maven依赖替换 替换前 dependencygroupIdeu.bitwalker/groupIdartifactIdUserAgentUtils/artifactIdversion1.21/version
/dependency替换后 dependencygroupIdcom.blueconic/groupIdartifactIdbrowscap-java/artifactIdversion1.4.1/version
/dependency 说明browscap-java的1.4.1版本实在2023年7月维护的 2、公共方法抽取 原有实现是基于UserAgentUtils的首先从请求头中获取到User-Agent再通过parseUserAgentString()方法获取到UserAgent对象然后在调用对象的getBrowser()方法获取到浏览器对象Browser进而获取到浏览器相关信息。 private static Browser getBrowser(HttpServletRequest request) {return UserAgent.parseUserAgentString(request.getHeader(User-Agent)).getBrowser();
} 现有实现是基于的首先获取到UserAgentParser对象基于对象的parse()方法去解析请求头进而获取Capabilities对象基于Capabilities对象的getValue()方法获取客户端浏览器和客户端操作系统等信息。 private static Capabilities getCapabilities(HttpServletRequest request) {try {UserAgentParser userAgentParser new UserAgentService().loadParser();return userAgentParser.parse(request.getHeader(User-Agent));} catch (Exception e) {throw new RuntimeException(e);}
} 3、获取远程客户端系统名称 改造前 public static String getOsName(HttpServletRequest request) {UserAgent userAgent UserAgent.parseUserAgentString(request.getHeader(User-Agent));return userAgent.getOperatingSystem().getName();
}
改造后 public static String getOsName(HttpServletRequest request) {Capabilities capabilities getCapabilities(request);return capabilities.getPlatform();
} 4、获取远程客户端系统版本 public static String getOsVersion(HttpServletRequest request) {Capabilities capabilities getCapabilities(request);return capabilities.getPlatformVersion();
} 改造前并不支持 5、获取远程客户端浏览器名称 改造前 public static String getBrowserName(HttpServletRequest request) {Browser browser getBrowser(request);return browser.getName();
}
改造后 public static String getBrowserName(HttpServletRequest request) {Capabilities capabilities getCapabilities(request);return capabilities.getBrowser();
} 6、获取远程客户端浏览器版本 改造前 public static String getBrowserVersion(HttpServletRequest request) {Browser browser getBrowser(request);Version version browser.getVersion(request.getHeader(User-Agent));return version.getVersion();
}
改造后 public static String getBrowserVersion(HttpServletRequest request) {Capabilities capabilities getCapabilities(request);return capabilities.getBrowserMajorVersion();
} 7、至于其他方法大家自行拓展验证 改造验证 1、浏览器信息准备 2、main方法验证 public static void main(String[] args) {final String userAgent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36;try {UserAgentParser userAgentParser new UserAgentService().loadParser();Capabilities capabilities userAgentParser.parse(userAgent);System.out.println(系统名称 capabilities.getPlatform() / capabilities.getPlatformVersion());System.out.println(浏览器信息 capabilities.getBrowser() / capabilities.getBrowserMajorVersion());} catch (Exception e) {throw new RuntimeException(e);}
} 3、验证结果可以正确识别 结尾彩蛋 为什么原有的工具类不能获取最新的浏览器和操作系统的信息呢跟下源码你就明白了 操作系统信息封装 Windows Android Symbian 浏览器信息的封装 Edge Chrome 项目地址
Giteestartdis-comm: Startdis Comm 即 Startdis 启迪快速开发平台所依赖的公共依赖模块。
Githubhttps://github.com/startdis/startdis-comm
Gitlab启迪平台 / Startdis Comm · GitLab 文章转载自点九先生
原文链接https://www.cnblogs.com/dianjiu/p/17880214.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86421.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!