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