Java服务器端客户端屏幕分辨率检测

标签 java servlets

首先我要说的是,这个问题已在以下位置得到了深入解答: How can I get the screen resolution in java?

我的问题不是如何获取客户端的屏幕分辨率,而是对 Toolkit、GraphicsDevice 和 Javascript 屏幕检测返回的值的解释,更重要的是它们为何不一致。通过这一点,我希望能够实现一种更好的方法来检测用户(客户端)的屏幕分辨率。

我正在自己的机器上进行测试,并设置了多种检测客户端屏幕分辨率的方法。我有双显示器设置,但我只在其中一台显示器上运行浏览器。第一个显示器是 1920X1080,第二个显示器是 1680X1050。

Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension dimension = toolkit.getScreenSize();
System.out.println(dimension.width + "/" + dimension.height); //3600X1093

此方法似乎是最精确的,因为它实际上返回两个显示器的分辨率。它返回的值为 3600X1093

GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
int width = gd.getDisplayMode().getWidth();
int height = gd.getDisplayMode().getHeight();
System.out.println(width + "/" + height); //1920X1080

这个方法似乎返回第一个监视器的值。我假设我可以通过更改默认屏幕设备来获得第二个显示器,但我无法知道用户正在使用哪个显示器,因此这是一个有争议的问题。尽管如此,它返回的值是 1920X1080。

var width = screen.width;
var height = screen.height;
console.log(width + "/" + height); //1680X1050

看来 javascript 是最精确的(显然......),因为它知道浏览器窗口的实际值。我知道我无法实现此服务器端,但我包含了 javascript,因为我正在将服务器端值与其进行比较。

首先,更好的选择似乎是工具包方法。这实际上检测客户端的分辨率,还是返回服务器当前运行的监视器的值?如果它返回客户端值,那么它是如何获取这些值的?

在服务器上进行客户端分辨率检测的主要原因是因为我想构建一个自适应图像服务器。换句话说,检测最大屏幕尺寸并返回合适的图像。

谁能解释一下这些方法之间的区别,以及哪种方法(或另一种方法)最适合检测客户端的分辨率?

最佳答案

java版本只会返回服务器的值,因为它是纯粹的服务器端。拥有客户端 java 的唯一方法是使用小程序。

因此,我建议使用 JavaScript 解决方案。

关于Java服务器端客户端屏幕分辨率检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20745782/

相关文章:

java - Ping 结果的正则表达式模式匹配

java - 如何解决 Exception::java.security.AccessControlException: HttpServlet 中的访问被拒绝

java - Java 中的监视器是什么?

java - 禁用特定 URL Spring 的基本身份验证

java - 如何使用 Micronaut 运行 KafkaStream 应用程序?

java - 防止表单重新提交并在页面刷新时插入数据库

java - ORA-00905 : missing keyword error in executing from servlet

java - 调用 servlet 时不转发

javascript - 将数据从servlet 发送到jsp,显示在html 表格中。

Java sdk Hyperledger v1.0