Java 使用struts2在jsp上呈现pdf流

Java 使用struts2在jsp上呈现pdf流,java,jakarta-ee,struts2,Java,Jakarta Ee,Struts2,我正在我的web应用程序中使用struts2。我想在jsp上呈现pdf流。我目前正在这样做: public String renderPDF() throws Exception { myService.rederPDF(getServletResponse().getServletOutputStream()); return SUCCESS; } myService的rederPDF方法获取一个pdf流,并写入servlet响应输出流。但这会引发一个异常,即“响应已提交

我正在我的web应用程序中使用struts2。我想在jsp上呈现pdf流。我目前正在这样做:

public String renderPDF() throws Exception
{
     myService.rederPDF(getServletResponse().getServletOutputStream());
     return SUCCESS;
}

myService的rederPDF方法获取一个pdf流,并写入servlet响应输出流。但这会引发一个异常,即“响应已提交”。

当您在转发之前已经向客户端发送了一些内容时,就会发生此异常

我正在使用servlet下载文件。看一看

public class FileDownloadServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    byte[] b = null;
    ServletOutputStream sop = null;

    try {
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition","attachment; filename=yourFileName.pdf");          

        sop = response.getOutputStream();
        b =  myService.getFileData(); /* your code */
        sop.write(b);    
        return;         
    } catch (Exception e) { 
        /* some code*/
    }
    finally{ 
        /* some code*/
    }
}
}

为什么不使用更干净更好的流结果和输入流呢?我认为流结果只用于文件下载。它可以用于在页面上呈现pdf流吗?流结果用于打开输入流,我相信这可以使用上述结果类型完成。好,让我测试一下,我会给你回复的。我实际上不想下载此文件。我想在页面上呈现它。我目前正在使用struts 2。呈现意味着,您希望将该文件与其他页面内容一起显示为PDF视图?为此,您必须包含一个将呈现PDF文件的iframe。你不能在一个JSP中同时做这两件事。即使这样,我也不确定主要的浏览器是否都支持在没有插件的情况下显示PDF。