java - 出现错误 "getOutputStream() has already been called for this response"

标签 java jsp servlets spring-mvc download

我正在显示某些事件的报告。我希望 Controller 显示用于保存和打开的弹出窗口。

我已经在响应中设置了文件,设置响应后我将返回 View 。

现在我的问题是,

我收到错误“java.lang.IllegalStateException:已为此响应调用 getOutputStream()”

在我的 Controller 类中,我编写了以下代码:

......一些代码......

InputStream is =
        new FileInputStream(new File("c:/reports/test_jasper.pdf"));
            response.setHeader("Content-Disposition","attachment;filename=\"test_jasper.pdf\"");
            OutputStream opStream = response.getOutputStream();
            IOUtils.copy(is, opStream);
            response.flushBuffer();
            HttpServletResponse response1 = new HttpServletResponse();

        
        
        model.addAttribute(ABC, new abc());

        model.addAttribute(DEF, new def());
        return SOME_VIEW;

框架:

Spring-MVC、Hibernate

异常(exception):

java.lang.IllegalStateException:已为此响应调用 getOutputStream()

所需的 O/P : 我希望响应显示文件的弹出窗口,并希望浏览器重定向到其他 View 。

最佳答案

在请求处理期间,将调用 HttpServletResponse.getWriter()HttpServletResponse.getOutputStream()。根据规范,同时使用 OutputStream 和 Writer 是非法的。

您遇到的异常是在尝试在其他地方调用 HttpServletResponse.getWriter() 时抛出的/

关于java - 出现错误 "getOutputStream() has already been called for this response",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11271816/

相关文章:

java - Android BLE 无法正确连接到设备

java - 尝试更改下一个 Activity 的图标 (setIcon) 时应用程序崩溃

java - Tomcat:将 session 存储在数据库中

java - 如何监控应用程序流程

java - 通过在下拉列表中选择数据库列来调用自动建议搜索框的jsp

java - Spring 5.0.0.M3 调用 ApplicationEventListener 时出错 : No ServletContext set - Exception encountered during context initialization

java - 更改 Naturald 参数名称后出错

java - 当上下文路径为 '' 时,application.getContext() 返回 null

java - 关于重写 SimpleUrlAuthenticationFailureHandler 的说明

Java Servlet 抛出异常