我有一个 servlet,它使用具有以下逻辑的方法:
ServletOutputStream out = response.getOutputStream();
IOUtils.copy(content, out);
out.close();
当我第一次运行它时,一切都按预期工作。如果我再次尝试使用相同的内容执行相同的过程,则 out 为空。我在第二次调试时检查了内容对象,它与第一次的内容相同。任何想法可能会发生什么?
假设您没有尝试写入关闭的输出流(这是我的第一个猜测,但您的评论让我认为 servlet 本身被重新调用,这将打开一个新的响应),那么您的输入很可能是流需要重置。根据实际流的类型,您可以在流本身上使用标记和重置,也可以重新创建流,或者可以将其作为字节数组复制到内存中以供重用。看到这个问题:两次读取流