BufferedReader 准备方法

2024-03-26

我观察到 java.io.BufferedReader 的 read 方法有一个奇怪的行为,该方法在 Tomcat 中返回 false,而当在 Jetty 中运行相同的 servlet 时返回 true。

BufferedReader bufferedReader = httpRequest.getReader();
System.out.println(bufferedReader.ready());
/** Perform some read operation */

Output:

true //Jetty
false //Tomcat

我知道 BufferedReader#ready 方法仅指示下一次读取是否不会因输入而被阻止(true)或 not(false),但我无法理解两个 Web 服务器环境之间的行为差​​异。

如果有人以前已经遇到过这种情况,我需要帮助更好地理解这一点吗?

提前致谢。


ready()如果读取器可以保证下一次读取不会阻塞,则返回 true。它返回 false 的事实并不能保证下一次读取将被阻止,并且 Reader 实现被授权始终从此方法返回 false。

Jetty 和 Tomcat 是 Java EE Web 容器的两种不同实现,并且各自提供自己的 HttpServletRequest 实现。因此,他们显然做出了不同的设计选择,但每个人都尊重规范。

您不应该依赖这种方法。我从未遇到过使用它有用的情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BufferedReader 准备方法 的相关文章

随机推荐