2

我正在为我的简单应用程序使用 Servlet 和 Jsp。当我单击提交按钮时,它会调用服务器并下载 PDF 文件并将其转发到下一页。现在我的问题是我 response.setHeader and getOutputStream在我的 servlet 中使用,同时我试图将我的请求转发到下一页。现在它向我抛出错误说 java.lang.IllegalStateException: Cannot forward after response has been committed。请任何人都可以帮我解决这个问题。

代码:

public class Class extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
Document document = new Document();  
        ServletConfig cfg=getServletConfig();
        ServletContext application=cfg.getServletContext();
    response.setContentType("application/pdf");
            response.setHeader("Content-Disposition"," attachment; filename=\"BI_Staffing.pdf\"");              
            PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());  

------------
---------------(My Code)
document.close();

                RequestDispatcher rd=request.getRequestDispatcher("staffing-results1.jsp");
                rd.forward(request,response);   
}
}
4

1 回答 1

0

你必须改变你的“工作流程”。Web 应用程序基于 HTTP,它是请求-响应协议。您已经通过写入响应的 outputStream 来响应您的请求。您无法再次转发回复。此外,您只能打开一个“输出通道”——用于二进制响应的 outputStream 或用于文本的 writer。由于已经为您的 PdfWriter 打开了输出流,您甚至无法获取写入器来写入单个位。

作为表单提交操作的结果,显示带有 PDF 链接的 staffing-results1.jsp 怎么样?

于 2013-11-14T14:37:17.093 回答