我在我的Simple应用程序中使用Servlet和Jsp。当我点击提交按钮时,它会调用servelt并下载PDF文件并将其翻译到下一页。现在我的问题是我在我的servlet中使用response.setHeader and getOutputStream
,同时我试图将我的resquest转到下一页。现在它给我的错误是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);
}
}
答案 0 :(得分:0)
你必须改变你的“工作流程”。 Web应用程序基于HTTP,即请求 - 响应协议。您已经通过写入响应的outputStream来响应您的请求。您无法再转发回复。此外,您只能打开一个“输出通道” - 用于二进制响应的outputStream或用于文本的输出通道。由于输出流已经为您的PdfWriter打开,因此您甚至无法让编写器写入一个位。
如果您的表单提交操作显示带有PDF链接的staffing-results1.jsp怎么样?