问题是,当我尝试执行java.io.EOFException
时,它将在服务器端启动ois = new ObjectInputStream(request.getInputStream());
private void writeObjectStream(HttpServletRequest request,
HttpServletResponse response) {
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(response.getOutputStream());
oos.writeChars("x");
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtil.closeQuietly(oos, ois);
}
}
调用writeObjectStream:
....
response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
response.setHeader("Location", "www.sample.com");
response.setHeader("Content-Length", "" + 500);
writeObjectStream(request, response);
return true;
最佳答案
对象流具有特定的格式,如果您正在阅读的内容不是该格式,则很容易混淆它。您使用这种类型的流写入/读取的每种数据类型都有一个标签,如果该标签与预期的不匹配,则抛出的异常是EOFException。我认为这很令人困惑,因为它可以在不同的上下文中引发StreamCorruptedException,这会更合适。
简而言之,您正在尝试读取不是ObjectInputStream的内容,或者您正在读取的数据的类型不正确,或者它已损坏。
关于java - sendRedirect()和ObjectOutputStream之间的java.io.EOFException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18113667/